Я работаю над обучением анимации в 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>
Мне потребовалось немного, чтобы понять это, но я наконец решил, как обе части анимации работают вместе. (Кончик на обработчиках был на месте.) Я написал сообщение в котором обсуждалось, как заставить это работать. Его можно легко экстраполировать на более продвинутые анимации.