#android #animation #looper
#Android #Анимация #циклический
Вопрос:
У меня был предыдущий проект, в котором я мог бы в общем виде использовать класс ObjectAnimator для анимации любого подобного класса
ObjectAnimator oa = ObjectAnimator.ofFloat(testShape, "translateX", 0f, 000f);
oa.setDuration(1000l);
oa.setRepeatCount(ObjectAnimator.REVERSE);
oa.setRepeatMode(ObjectAnimator.RESTART);
oa.start();
… и это будет работать отлично, никаких проблем. Теперь, когда я пытаюсь запустить ту же настройку, я получаю
W/dalvikvm(19053): threadid=10: thread exiting with uncaught exception (group=0x400d1760)
E/AndroidRuntime(19053): FATAL EXCEPTION: Animation Thread
E/AndroidRuntime(19053): android.util.AndroidRuntimeException: Animators may only be run on Looper threads
E/AndroidRuntime(19053): at android.animation.ValueAnimator.start(ValueAnimator.java:900)
E/AndroidRuntime(19053): at android.animation.ValueAnimator.start(ValueAnimator.java:931)
E/AndroidRuntime(19053): at android.animation.ObjectAnimator.start(ObjectAnimator.java:282)
E/AndroidRuntime(19053): at com.processing.test.Run.setup(Run.java:43)
Я пытался добавить Looper.prepare () и Looper.loop () в свои циклы рисования, но безрезультатно. Поскольку ранее мне вообще не приходилось использовать класс Looper, это нежелательный подход.
Может ли это быть проблемой версии с моей базовой библиотекой (в данном случае обработка -Android) или это связано с изменением Honeycomb с 3.0 на 3.1
Спасибо
Ответ №1:
Просматривая документы для ObjectAnimator, кажется, что ничего не изменилось: что вам, вероятно, просто нужно сделать, это убедиться, что вы выполняете вызов из потока пользовательского интерфейса: либо убедитесь, что он вызывается в методе обработчика событий, используйте экземпляр обработчика или выполните View.post() с Runnable, который фактически запускает анимацию. Вы внезапно начали вызывать start
из другого местоположения?