diff --git a/src/com/annimon/everlastingsummer/drawables/TransitionAnimationDrawable.java b/src/com/annimon/everlastingsummer/drawables/TransitionAnimationDrawable.java index a500c7a..2ac4acc 100644 --- a/src/com/annimon/everlastingsummer/drawables/TransitionAnimationDrawable.java +++ b/src/com/annimon/everlastingsummer/drawables/TransitionAnimationDrawable.java @@ -14,6 +14,8 @@ import android.os.SystemClock; */ public class TransitionAnimationDrawable extends LayerDrawable { + private static final Drawable NONE = new ColorDrawable(); + private static final int TRANSITION_STARTING = 0; private static final int TRANSITION_RUNNING = 1; private static final int TRANSITION_NONE = 2; @@ -26,6 +28,13 @@ public class TransitionAnimationDrawable extends LayerDrawable { private long startTime; private int currentDuration; private int fromIndex, toIndex; + private boolean crossFade; + + public TransitionAnimationDrawable(int duration, Drawable drawable1, Drawable drawable2) { + this(duration, new int[] {0, duration}, new Drawable[] { + drawable1 == null ? NONE : drawable1, + drawable2 == null ? NONE : drawable2 }); + } public TransitionAnimationDrawable(int fullDuration, int[] durations, Drawable[] drawables) { super(drawables); @@ -80,7 +89,7 @@ public class TransitionAnimationDrawable extends LayerDrawable { } if (done) { -// getDrawable(fromIndex).draw(canvas); + getDrawable(fromIndex).draw(canvas); getDrawable(toIndex).draw(canvas); if (state == TRANSITION_RUNNING) { if (toIndex < lastIndex) { @@ -97,7 +106,9 @@ public class TransitionAnimationDrawable extends LayerDrawable { // Рисуем подкладку Drawable d = getDrawable(fromIndex); + if (crossFade) d.setAlpha(255 - alpha); d.draw(canvas); + if (crossFade) d.setAlpha(255); // Рисуем наложенное изображение с прозрачностью if (alpha > 0) { @@ -109,10 +120,16 @@ public class TransitionAnimationDrawable extends LayerDrawable { if (!done) invalidateSelf(); } + public void setCrossFadeEnabled(boolean crossFade) { + this.crossFade = crossFade; + } + + public boolean isCrossFadeEnabled() { + return crossFade; + } + public static class Builder { - private static final Drawable NONE = new ColorDrawable(); - private int fullDuration; private final List durations; private final List drawables;