From 3e6e69d2fe232cfe4fedb6be374df4270325a8bc Mon Sep 17 00:00:00 2001 From: pengh6 Date: Fri, 20 Aug 2021 18:54:23 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8Dsample=E4=B8=AD?= =?UTF-8?q?=E5=B8=A7=E5=8A=A8=E7=94=BB=E4=B8=8D=E5=8A=A8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9B=E4=BF=AE=E5=A4=8Dsample=E4=B8=ADlist=20item=E5=A4=8D?= =?UTF-8?q?=E7=94=A8=E5=AF=BC=E8=87=B4=E7=9A=84UI=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/amulyakhare/td/ListAbility.java | 9 +++++++- .../java/com/amulyakhare/td/MainAbility.java | 21 ++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/entry/src/main/java/com/amulyakhare/td/ListAbility.java b/entry/src/main/java/com/amulyakhare/td/ListAbility.java index 11982e9..23e41f3 100644 --- a/entry/src/main/java/com/amulyakhare/td/ListAbility.java +++ b/entry/src/main/java/com/amulyakhare/td/ListAbility.java @@ -145,7 +145,14 @@ public class ListAbility extends Ability { private void updateCheckedState(ViewHolder holder, ListData item) { if (item.isChecked) { - holder.imageView.setImageElement(mDrawableBuilder.build(" ", 0xff616161)); + TextDrawable drawable = mDrawableBuilder.build("", 0xffcdcbcb); + holder.imageView.addDrawTask(new Component.DrawTask() { + @Override + public void onDraw(Component component, Canvas canvas) { + drawable.setBounds(new Rect(0, 0, holder.imageView.getWidth(), holder.imageView.getHeight())); + drawable.drawToCanvas(canvas); + } + }); ShapeElement shapeElement = new ShapeElement(); shapeElement.setRgbColor(RgbColor.fromArgbInt(HIGHLIGHT_COLOR)); holder.view.setBackground(shapeElement); diff --git a/entry/src/main/java/com/amulyakhare/td/MainAbility.java b/entry/src/main/java/com/amulyakhare/td/MainAbility.java index 61acf3e..c1bd158 100644 --- a/entry/src/main/java/com/amulyakhare/td/MainAbility.java +++ b/entry/src/main/java/com/amulyakhare/td/MainAbility.java @@ -84,6 +84,8 @@ public class MainAbility extends Ability implements ListContainer.ItemClickedLis // holder.imageView.setImageElement(drawable);由于TextDrawable中重写的drawToCanvas不会自己调用,所以这里我们主动进行调用,相当于直接在image的canvas上操作来替代setImageElement holder.imageView.addDrawTask(new Component.DrawTask() { + private int index; + private boolean isCallbackExist; @Override public void onDraw(Component component, Canvas canvas) { if (drawable instanceof TextDrawable) { @@ -106,13 +108,18 @@ public class MainAbility extends Ability implements ListContainer.ItemClickedLis } } else if (drawable instanceof FrameAnimationElement) { FrameAnimationElement fae = (FrameAnimationElement) drawable; - for (int i = 0; i < fae.getNumberOfFrames(); i++) { - Element frame = fae.getFrame(i); - if (frame instanceof TextDrawable){ - TextDrawable td = (TextDrawable) frame; - td.setBounds(new Rect(0, 0, holder.imageView.getWidth(), holder.imageView.getHeight())); - td.drawToCanvas(canvas); - } + if (index >= fae.getNumberOfFrames()) { + index = 0; + } + TextDrawable tdInFae = (TextDrawable) fae.getFrame(index); + tdInFae.setBounds(new Rect(0, 0, holder.imageView.getWidth(), holder.imageView.getHeight())); + tdInFae.drawToCanvas(canvas); + index++; + if (!isCallbackExist) { + isCallbackExist = true; + fae.setCallback(element -> { + holder.imageView.invalidate(); + }); } } else { throw new IllegalArgumentException("shouldn't go to here"); -- Gitee