diff --git a/src/com/annimon/everlastingsummer/AnimatableImageView.java b/src/com/annimon/everlastingsummer/AnimatableImageView.java index ac9453f..d4ce006 100644 --- a/src/com/annimon/everlastingsummer/AnimatableImageView.java +++ b/src/com/annimon/everlastingsummer/AnimatableImageView.java @@ -64,10 +64,10 @@ public class AnimatableImageView extends ImageView { setImageResource(resId, ""); } - public void setImageResource(int resId, String effect) { + public int setImageResource(int resId, String effect) { previous = getDrawable(); super.setImageResource(resId); - setAnimationEffect(effect); + return setAnimationEffect(effect); } @Override @@ -75,10 +75,10 @@ public class AnimatableImageView extends ImageView { setImageDrawable(drawable, ""); } - public void setImageDrawable(Drawable drawable, String effect) { + public int setImageDrawable(Drawable drawable, String effect) { previous = getDrawable(); super.setImageDrawable(drawable); - setAnimationEffect(""); + return setAnimationEffect(""); } @Override @@ -86,15 +86,15 @@ public class AnimatableImageView extends ImageView { setImageBitmap(bm, ""); } - public void setImageBitmap(Bitmap bm, String effect) { + public int setImageBitmap(Bitmap bm, String effect) { previous = getDrawable(); super.setImageBitmap(bm); - setAnimationEffect(effect); + return setAnimationEffect(effect); } - private void setAnimationEffect(String animEffect) { + private int setAnimationEffect(String animEffect) { final String effect = animEffect.toLowerCase(Locale.ENGLISH); - if (!animations.containsKey(effect)) return; + if (!animations.containsKey(effect)) return 0; final Anim anim = animations.get(effect); @@ -105,6 +105,7 @@ public class AnimatableImageView extends ImageView { final TransitionDrawable transition = new TransitionDrawable(layers); setImageDrawable(transition); transition.startTransition(anim.duration); + return anim.duration; } private static class Anim { diff --git a/src/com/annimon/everlastingsummer/Parser.java b/src/com/annimon/everlastingsummer/Parser.java index 83e0efa..114736b 100644 --- a/src/com/annimon/everlastingsummer/Parser.java +++ b/src/com/annimon/everlastingsummer/Parser.java @@ -350,7 +350,7 @@ public final class Parser { final String name = consume(TokenType.WORD).getText(); final String effect = matchWithEffect(); ViewActivity.getInstance().background(type, name, effect); - return false; + return true; } private boolean show() { diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index 052b09a..934f32b 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -285,16 +285,21 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch backgroundName = name; text(""); spritesClear(); - if (name.equalsIgnoreCase("black")) background.setImageResource(android.R.color.black, effect); - else if (name.equalsIgnoreCase("white")) background.setImageResource(android.R.color.white, effect); + int animationTime = 0; + if (name.equalsIgnoreCase("black")) + animationTime = background.setImageResource(android.R.color.black, effect); + else if (name.equalsIgnoreCase("white")) + animationTime = background.setImageResource(android.R.color.white, effect); else { try { - background.setImageBitmap(IOUtil.readBitmap(PathResolver.background(type, name)), effect); + animationTime = background.setImageBitmap(IOUtil.readBitmap( + PathResolver.background(type, name)), effect); } catch (Exception ioe) { if (Logger.DEBUG) Logger.log("background: " + type + ", " + name, ioe); background.setImageResource(android.R.color.black); } } + pause(animationTime, false); } public void spritesClear() {