Android-анимация с экрана не работает - PullRequest
6 голосов
/ 12 февраля 2012

У меня есть вид, который полностью находится за пределами экрана, и я пытаюсь анимировать его на экране.

Когда я звоню:

view.startAnimation(tA);

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

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

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

Ответы [ 2 ]

1 голос
/ 03 октября 2013

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

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

Edit:

Если подумать, я просто наткнулся на этот ответ , и он предоставляет рабочую альтернативу, если вы можете использовать более новые 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 голосов
/ 19 июля 2014

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

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

...