Изменение изображений во время анимации Android

#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:

Мне потребовалось немного времени, чтобы разобраться в этом, но я, наконец, определил, как заставить обе части анимации работать вместе. (Совет по обработчикам был точен.) Я написал сообщение в блоге, в котором обсуждалось, как заставить это работать. Это можно легко экстраполировать на более продвинутые анимации.