Делаю простенькую карточную игру. Разложено несколько карт и я хочу, чтобы при нажатии на любую из них она переворачивалась с использованием анимации.
Подскажите, не могу понять, какую анимацию и как правильно использовать.
Ответ
Использую вот такой класс:
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);
Попробуйте, эффект будет как будто переворачивается карта :)
Комментариев нет:
Отправить комментарий