Я устанавливаю анимацию на своем представлении из следующего примера ApiDemo (см. layout_grid_fade.html):
<?xml version="1.0" encoding="utf-8"?>
<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:rowDelay="50%"
android:directionPriority="column"
android:animation="@anim/fade" />
и ниже - мой код
mView.startAnimation(AnimationUtils.loadAnimation(ViewModel.this, R.anim.layout_grid_fade));
mView.setImage(modelImages.get(0).image);
но я получаю исключение, не знаю почему? ниже моя трассировка журнала
FATAL EXCEPTION: main
java.lang.RuntimeException: Unknown animation name: gridLayoutAnimation
at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:116)
at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:83)
at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:64)
at nick.kimK.ViewModel$1$1.run(ViewModel.java:72)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
at dalvik.system.NativeStart.main(Native Method)
UPD:
Не каждый xml в папке res/anim объявляет анимацию. Некоторые из них могут объявить Animators или LayoutAnimationControllers. Это не анимация, поэтому они не могут быть загружены вызовом loadAnimation()
.
-
Похоже, что тег gridLayoutAnimation
описывает не определенный базовый тип анимации, а скорее GridLayoutAnimationController. Поэтому он может быть загружен непосредственно с AnimationUtils.loadAnimation(), но должен быть установлен в свойство ViewGroup (макет) throuh layoutAnimation. Если вы все еще хотите получить экземпляр AnimationController в коде, используйте метод AnimationUtils.loadLayoutAnimation():
LayoutAnimationController layoutAnimation = AnimationUtils.loadLayoutAnimation(ViewModel.this, R.anim.layout_grid_fade)
Но вы вряд ли можете использовать layoutAnimation в том, как вы делаете в своем примере. Я нашел эту статью весьма полезной для понимания анимации макета.