Проблемы с анимацией макета списка
Я хочу, чтобы элементы в списке отображались по одному за раз слева направо. У меня есть следующее в res/anim/slide_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" />
</set>
И в моем методе onCreate в моей ListActivity у меня есть:
LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.slide_right);
mList.setLayoutAnimation(controller);
Когда я запускаю его, я получаю RuntimeException
, вызванный Unknown layout animation name: set
Что я делаю неправильно?
Ответы
Ответ 1
У меня была такая же проблема, и я, похоже, ее решил. Я думаю, что эта проблема аналогична этой: http://groups.google.com/group/android-developers/browse_thread/thread/2266e171b9b0cf17
Я также разместил там свой ответ (с некоторыми изменениями). Вам нужно будет определить второй XML файл, в котором есть элемент layoutAnimation:
"Если вы хотите применить анимацию с помощью android: layoutAnimation (или используя loadLayoutAnimation), кажется, вам нужно определить дополнительный XML файл, который ссылается на вашу анимацию (масштаб, набор, перевод и т.д.). Вы можете найти здесь пример: http://developerlife.com/tutorials/?p=343.
Например, ваш второй XML файл будет выглядеть следующим образом (позвоните ему example.xml):
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="10%"
android:animation="@anim/slide_right"
/>
Затем вы можете ссылаться на эту анимацию в вашем файле макета:
android:layoutAnimation="@anim/example"
(или в вашем коде с использованием loadLayoutAnimation)
"
Надеюсь, это поможет.
Ciao!
Ответ 2
Я не уверен, что вы уже нашли одушевленность, но позвольте мне рассказать вам, как я нашел решение.
Сделайте еще один Android xml в папке ur anim. Пусть это будет list_layout_controller.xml, как показано ниже
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="20%"
android:animationOrder="normal"
android:animation="@anim/slide_right">
</layoutAnimation>
Теперь установите list_layout_controller.xml(используя нотацию @anim) в качестве анимации, как показано ниже, и запустите:
LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.list_layout_controller);
mList.setLayoutAnimation(controller);