Страницы

Поиск по вопросам

суббота, 8 июня 2019 г.

Анимация переворота карты

Делаю простенькую карточную игру. Разложено несколько карт и я хочу, чтобы при нажатии на любую из них она переворачивалась с использованием анимации.
Подскажите, не могу понять, какую анимацию и как правильно использовать.


Ответ

Использую вот такой класс:
public class FlipAnimation implements Animation.AnimationListener { private Animation animation1; private Animation animation2; private boolean isBackOfCardShowing = true; private ImageView img; private Context ctx; private FlipEnd flipped; Card card;
public interface FlipEnd { void flipEnd(ImageView img, Card card); }
FlipAnimation(Context ctx, ImageView img, Card card) { this.img = img; this.ctx = ctx; this.card = card; flipped = (FlipEnd) ctx; animation1 = AnimationUtils.loadAnimation(ctx, R.anim.flip_to_middle); animation1.setAnimationListener(this); animation2 = AnimationUtils.loadAnimation(ctx, R.anim.flip_from_middle); animation2.setAnimationListener(this);
img.clearAnimation(); img.setAnimation(animation1); img.startAnimation(animation1); }
@Override public void onAnimationStart(Animation animation) {
}
@Override public void onAnimationEnd(Animation animation) { if (animation == animation1) { if (isBackOfCardShowing) { img.setImageResource(R.drawable.card_face); flipped.flipEnd(img,card); } else { img.setImageResource(R.drawable.card_back); } img.clearAnimation(); img.setAnimation(animation2); img.startAnimation(animation2); } else { isBackOfCardShowing = !isBackOfCardShowing; }
}
@Override public void onAnimationRepeat(Animation animation) {
} }
Тут еще сразу добавлен интерфэйс, чтобы отслеживать, когда и какая карта перевернулась. Кастомизируйте его, как хотите.
R.anim.flip_to_middle.xml :

flip_from_middle.xml

Вызывать там, где надо: new FlipAnimation(YourActivity.this, cardImage);
Попробуйте, эффект будет как будто переворачивается карта :)

Комментариев нет:

Отправить комментарий