Поддержка эффектов переходов при сокрытии спрайтов

This commit is contained in:
Victor 2015-05-05 13:20:10 +03:00
parent 3ba4b7d1ab
commit 8aaa36fde6
2 changed files with 23 additions and 2 deletions

View File

@ -22,9 +22,12 @@ import com.annimon.everlastingsummer.transitions.Transitions;
*/ */
public class AnimatableImageView extends ImageView { public class AnimatableImageView extends ImageView {
private static final ColorDrawable NONE = new ColorDrawable();
private static final SparseArray<Drawable> colors; private static final SparseArray<Drawable> colors;
static { static {
colors = new SparseArray<Drawable>(); colors = new SparseArray<Drawable>();
colors.append(0, NONE);
colors.append(Color.WHITE, new ColorDrawable(Color.WHITE)); colors.append(Color.WHITE, new ColorDrawable(Color.WHITE));
colors.append(Color.BLACK, new ColorDrawable(Color.BLACK)); colors.append(Color.BLACK, new ColorDrawable(Color.BLACK));
colors.append(0xFFEE1111, new ColorDrawable(0xFFEE1111)); colors.append(0xFFEE1111, new ColorDrawable(0xFFEE1111));
@ -63,7 +66,7 @@ public class AnimatableImageView extends ImageView {
public int setImageDrawable(Drawable drawable, String effect) { public int setImageDrawable(Drawable drawable, String effect) {
previous = getDrawable(); previous = getDrawable();
super.setImageDrawable(drawable); super.setImageDrawable(drawable);
return setAnimationEffect(""); return setAnimationEffect(effect);
} }
@Override @Override
@ -87,6 +90,14 @@ public class AnimatableImageView extends ImageView {
} }
return result; 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) { private int setAnimationEffect(String animEffect) {
final String effect = animEffect.toLowerCase(Locale.ENGLISH); final String effect = animEffect.toLowerCase(Locale.ENGLISH);

View File

@ -344,7 +344,17 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
public void hideSprite(String whoid, String effect) { public void hideSprite(String whoid, String effect) {
if (!spriteInContainer.containsKey(whoid)) return; 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); container.removeView(img);
spriteInContainer.remove(img); spriteInContainer.remove(img);
safeClearImageView(img); safeClearImageView(img);