Делаю простенькую карточную игру. Разложено несколько карт и я хочу, чтобы при нажатии на любую из них она переворачивалась с использованием анимации.
Подскажите, не могу понять, какую анимацию и как правильно использовать.
Использую вот такой класс:
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
:
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="1.0" />
flip_from_middle.xml
:
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0" android:toXScale="1.0"
android:pivotX="50%"
android:fromYScale="1.0" android:toYScale="1.0"
android:pivotY="50%"
android:duration="250" />
Вызывать там, где надо: new FlipAnimation(YourActivity.this, cardImage);
Попробуйте, эффект будет как будто переворачивается карта :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть два устройства ардуино, на ней работает акваконтроллер, и андроид-устройство(телефон) на котором я хочу редактировать настройки контроллераВидится...
Недавно изучаю JavaНабросал код который копирует double значения из одного файла в другой
Для расширения типов Hibernate использую vladmihalcea/hibernate-types
У меня есть самый простой, насколько это возможно, XML-файл