diff --git a/src/com/annimon/everlastingsummer/AnimatableImageView.java b/src/com/annimon/everlastingsummer/AnimatableImageView.java index c7736ed..591961e 100644 --- a/src/com/annimon/everlastingsummer/AnimatableImageView.java +++ b/src/com/annimon/everlastingsummer/AnimatableImageView.java @@ -22,9 +22,12 @@ import com.annimon.everlastingsummer.transitions.Transitions; */ public class AnimatableImageView extends ImageView { + private static final ColorDrawable NONE = new ColorDrawable(); + private static final SparseArray colors; static { colors = new SparseArray(); + colors.append(0, NONE); colors.append(Color.WHITE, new ColorDrawable(Color.WHITE)); colors.append(Color.BLACK, new ColorDrawable(Color.BLACK)); colors.append(0xFFEE1111, new ColorDrawable(0xFFEE1111)); @@ -63,7 +66,7 @@ public class AnimatableImageView extends ImageView { public int setImageDrawable(Drawable drawable, String effect) { previous = getDrawable(); super.setImageDrawable(drawable); - return setAnimationEffect(""); + return setAnimationEffect(effect); } @Override @@ -87,6 +90,14 @@ public class AnimatableImageView extends ImageView { } return result; } + + public void hideDrawable(String effect, Runnable runnable) { + final int delay = setImageDrawable(NONE, effect); + if (delay == 0) runnable.run(); + else { + postDelayed(runnable, delay); + } + } private int setAnimationEffect(String animEffect) { final String effect = animEffect.toLowerCase(Locale.ENGLISH); diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index 7a1b75d..49f5af8 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -344,7 +344,17 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch public void hideSprite(String whoid, String effect) { if (!spriteInContainer.containsKey(whoid)) return; - final ImageView img = spriteInContainer.get(whoid); + final AnimatableImageView img = spriteInContainer.get(whoid); + img.hideDrawable(effect, new Runnable() { + @Override + public void run() { + hide(img); + } + }); + } + + private void hide(ImageView img) { + if (img == null) return; container.removeView(img); spriteInContainer.remove(img); safeClearImageView(img);