#android #animation
#Android #Анимация
Вопрос:
Я работал над изучением анимации в Android, и, судя по руководствам, пока это довольно просто. Тем не менее, я хотел продвинуть анимацию на шаг дальше того, чему учат учебные пособия.
Я хотел имитировать вращение кубика. Вот мой код для добавления кубика в представление.
<ImageButton android:id="@ id/dice" android:clickable="true"
android:onClick="rollDie" android:src="@drawable/dice_sides"
android:layout_alignParentRight="true" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@null" />
Источником dice_sides
является список уровней.
Добавить начальную анимацию было легко. В rollDie
методе в Activity я сделал это:
/**
* Roll of the die.
*
* @param view
* The view that is being acted upon.
*/
public void rollDie(View view) {
// Setup the animation.
Animation move = AnimationUtils.loadAnimation(view.getContext(),
R.anim.move);
View dice = findViewById(R.id.dice);
dice.setAnimation(move);
move.start();
}
Это работает нормально. Изображение матрицы раскачивается взад и вперед.
Чего я хочу, так это чтобы кубик отображал различные числа по мере прохождения анимации, пока не остановится на последней части анимации. К сожалению, я не могу найти много информации о том, как сделать вторую анимацию вместе с первой. Кто-то упоминал об использовании обработчиков, но я не совсем понимаю, как их использовать в этой ситуации. Если кто-нибудь может указать мне правильное направление, я был бы признателен.
(Для справки, вот dice_sides.)
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="0" android:drawable="@drawable/die.1" />
<item android:maxLevel="1" android:drawable="@drawable/die.2" />
<item android:maxLevel="2" android:drawable="@drawable/die.3" />
<item android:maxLevel="3" android:drawable="@drawable/die.4" />
<item android:maxLevel="4" android:drawable="@drawable/die.5" />
<item android:maxLevel="5" android:drawable="@drawable/die.6" />
</level-list>
Ответ №1:
Мне потребовалось немного времени, чтобы разобраться в этом, но я, наконец, определил, как заставить обе части анимации работать вместе. (Совет по обработчикам был точен.) Я написал сообщение в блоге, в котором обсуждалось, как заставить это работать. Это можно легко экстраполировать на более продвинутые анимации.