Android: применение анимации к представлению создает исключение RuntimeException

1

Я устанавливаю анимацию на своем представлении из следующего примера 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)
  • 0
    Вы можете опубликовать свой XML-файл.
  • 0
    это по ссылке, которую я предоставил выше
Показать ещё 2 комментария
Теги:
animation

1 ответ

6
Лучший ответ

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 в том, как вы делаете в своем примере. Я нашел эту статью весьма полезной для понимания анимации макета.

  • 0
    на самом деле я использую developer.android.com/resources/samples/ApiDemos/res/anim/… анимации из этого URL некоторые из них работают, некоторые из них не
  • 0
    Это потому, что некоторые файлы не объявляют анимации, а LayoutAnimationControllers ( developer.android.com/intl/zh-TW/reference/android/view/… ) или аниматоры ( developer.android.com/intl/zh-TW/reference). / Android / анимация /… ).
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню