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

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, "");
}
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 {

View File

@ -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() {

View File

@ -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() {