2012-02-12 2 views
5

У меня есть представление, которое полностью помещено на экране, и я пытаюсь его анимировать на экране.Android Animate view from off screen не работает

Когда я зову:

view.startAnimation(tA); 

ничего не происходит, tA.initialize и tA.applyTransformation никогда не дозвонились.

Если я перемещаю представление так, чтобы любая его часть была видна до начала анимации, анимация работает правильно.

Что мешает анимировать представление, когда оно расположено у родительского представления?

ответ

1

Это мое понимание, исследуя ту же проблему, что и для Android Animation не очень хорошо, когда они снабжены внеэкранными координатами для их запуска или завершения.

Существует несколько диалогов на форумах Android об этой ошибке, которые были рассмотрены, но я все еще испытываю проблемы в 4.2.

Edit:

На второй мысли, я просто побежал через этот answer и обеспечивает рабочую альтернативу, если вы можете использовать новые API-интерфейсы (ObjectAnimator).

View view = this; 
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 0, 100); 
anim.setDuration(super.animationDuration()); 
anim.start(); 

Где свойства ObjectAnimator.ofFloat(view, "y", 0, 100); являются

ObjectAnimator.ofFloat(Object objBeingAnimated, String propertyBeingAnimated, float startValue, float endValue) 
0

Я нашел this answer с помощью ValueAnimator изменить MarginLayoutParams.topMargin (в моем случае) в onAnimationUpdate(), которая зафиксировала проблему. Мой вид начинается с установленного значения поля, так что вид отключен.

Подход ObjectAnimator был многообещающим, но не работал для меня, у него была такая же проблема отсечения для неэкранов, что и у меня с TranslateAnimation.