Улучшена обработка анимационных эффектов

This commit is contained in:
Victor 2015-05-04 16:18:07 +03:00
parent 11867dca90
commit 8d9ea21306
3 changed files with 18 additions and 12 deletions

View File

@ -64,10 +64,10 @@ public class AnimatableImageView extends ImageView {
setImageResource(resId, ""); setImageResource(resId, "");
} }
public void setImageResource(int resId, String effect) { public int setImageResource(int resId, String effect) {
previous = getDrawable(); previous = getDrawable();
super.setImageResource(resId); super.setImageResource(resId);
setAnimationEffect(effect); return setAnimationEffect(effect);
} }
@Override @Override
@ -75,10 +75,10 @@ public class AnimatableImageView extends ImageView {
setImageDrawable(drawable, ""); setImageDrawable(drawable, "");
} }
public void setImageDrawable(Drawable drawable, String effect) { public int setImageDrawable(Drawable drawable, String effect) {
previous = getDrawable(); previous = getDrawable();
super.setImageDrawable(drawable); super.setImageDrawable(drawable);
setAnimationEffect(""); return setAnimationEffect("");
} }
@Override @Override
@ -86,15 +86,15 @@ public class AnimatableImageView extends ImageView {
setImageBitmap(bm, ""); setImageBitmap(bm, "");
} }
public void setImageBitmap(Bitmap bm, String effect) { public int setImageBitmap(Bitmap bm, String effect) {
previous = getDrawable(); previous = getDrawable();
super.setImageBitmap(bm); 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); final String effect = animEffect.toLowerCase(Locale.ENGLISH);
if (!animations.containsKey(effect)) return; if (!animations.containsKey(effect)) return 0;
final Anim anim = animations.get(effect); final Anim anim = animations.get(effect);
@ -105,6 +105,7 @@ public class AnimatableImageView extends ImageView {
final TransitionDrawable transition = new TransitionDrawable(layers); final TransitionDrawable transition = new TransitionDrawable(layers);
setImageDrawable(transition); setImageDrawable(transition);
transition.startTransition(anim.duration); transition.startTransition(anim.duration);
return anim.duration;
} }
private static class Anim { private static class Anim {

View File

@ -350,7 +350,7 @@ public final class Parser {
final String name = consume(TokenType.WORD).getText(); final String name = consume(TokenType.WORD).getText();
final String effect = matchWithEffect(); final String effect = matchWithEffect();
ViewActivity.getInstance().background(type, name, effect); ViewActivity.getInstance().background(type, name, effect);
return false; return true;
} }
private boolean show() { private boolean show() {

View File

@ -285,16 +285,21 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
backgroundName = name; backgroundName = name;
text(""); text("");
spritesClear(); spritesClear();
if (name.equalsIgnoreCase("black")) background.setImageResource(android.R.color.black, effect); int animationTime = 0;
else if (name.equalsIgnoreCase("white")) background.setImageResource(android.R.color.white, effect); 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 { else {
try { try {
background.setImageBitmap(IOUtil.readBitmap(PathResolver.background(type, name)), effect); animationTime = background.setImageBitmap(IOUtil.readBitmap(
PathResolver.background(type, name)), effect);
} catch (Exception ioe) { } catch (Exception ioe) {
if (Logger.DEBUG) Logger.log("background: " + type + ", " + name, ioe); if (Logger.DEBUG) Logger.log("background: " + type + ", " + name, ioe);
background.setImageResource(android.R.color.black); background.setImageResource(android.R.color.black);
} }
} }
pause(animationTime, false);
} }
public void spritesClear() { public void spritesClear() {