Флеш анимации для Android

Я тратил столько streamов на эту тему, что я могу найти на мерцание, которое возникает в Android 2.2 при работе с AnimationListeners, но я не могу решить мою проблему.

У меня есть LinearLayout ‘popover’, который пользователь прикасается, чтобы опуститься примерно на 100 пикселей, и снова коснется, чтобы переместить его обратно. Я, наконец, начал работать над первой частью без какого-либо мерцания (благодаря предложению вызывать clearAnimation () на анимированном представлении), но при выполнении противоположного (т. Е. Перемещение представления назад) есть мерцание начало. Я не могу называть clearAnimation () в методе onAnimationStart (), поскольку он не будет анимировать!

Конечно, вся анимация работает отлично, если я использовал setFillAfter () без прослушивателя анимации, но тогда сенсорная область обзора не будет двигаться (потому что сам вид не «фактически» перемещен).

Любая помощь будет принята с благодарностью.

this.popoverTab.setOnClickListener(new OnClickListener() { public void onClick(View v) { popoverTab.setClickable(false); popoverTab.setFocusable(false); if (popoverHidden) { Log.d(TAG, "About to show popover"); // the popover is currently hidden, show it. TranslateAnimation animation = new TranslateAnimation(0, 0, 100, 0); animation.setDuration(700); animation.setFillBefore(true); animation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { footer.layout(footer.getLeft(), (footer.getTop() - 100), footer.getRight(), footer.getBottom()); } }); footer.startAnimation(animation); } else { Log.d(TAG, "About to hide popover"); // the popover is showing, hide it. TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 100); animation.setDuration(700); animation.setFillAfter(true); animation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { footer.clearAnimation(); footer.layout(footer.getLeft(), (footer.getTop() + 100), footer.getRight(), footer.getBottom()); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { } }); footer.startAnimation(animation); } // invert. popoverHidden = !popoverHidden; popoverTab.setClickable(true); popoverTab.setFocusable(true); } }); 

У меня была такая же проблема, и через несколько дней я нашел решение … thanx:

http://www.mail-archive.com/[email protected]/msg67535.html

Я решил решить эту проблему. Подсказка исходила из того, что при показе представления все работало нормально. По-видимому, когда анимация запущена, обновление, которое будет вызвано шоу, происходит в фоновом режиме и не вызывает мерцание. Добавление короткой анимации к заднему концу onAnimationEnd (), когда мы скрываем представление, заставляет мерцание уходить.

Вот новый onAndimationEnd () в рабочем коде

  public void onAnimationEnd(Animation animation) { animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 0.0f); animation.setDuration(1); mPlayer0Panel.startAnimation(animation); } 
 @Override public void onAnimationEnd(Animation animation) { footer.clearAnimation(); } 

Это сработало для меня.

Вам не нужно использовать clearAnimation() на onAnimationEnd() .

Попробуй это:

  1. Используйте setFillBefore(true) и setFillAfter(true) для обеих анимаций
  2. Установите правильные свойства макета при запуске и завершении обеих анимаций

Я искал все сообщения stackoverflow для проблемы с анимацией (мерцание и вялость). Я не нашел идеального ответа. Но я нашел решение для того же, что и ниже,

onStart of Animation,

 view_you_want_to_animate.setDrawingCacheEnabled(true); 

onEnd использования анимации,

 view_you_want_to_animate.setDrawingCacheEnabled(false); 

Теперь мое представление не имеет мерцания или вялого поведения, когда мое представление анимируется. Это хорошо работает для меня.

Alrite, у меня была такая же проблема, которая заставила меня искать ее, я попал в этот пост. Нашел решение для моей проблемы, решил поделиться своим решением.

У меня было много анимаций, но мерцание началось недавно, но когда я проследил, что проблема обнаружила, мерцание произошло после рисования списка анимаций в цикле for . (список массивов)

Я просто добавил try catch, чтобы избежать проблемы после ее поиска, проблемы; некоторые из анимаций были удалены на лету, но не было достаточно времени для обновления streamа, поэтому цикл все еще пытался и не удался, но не отображался, вместо этого он мерцал, но в try и catch на чертеже массива исправлена ​​моя проблема.

  • Восстановить пре-iOS7 UINavigationController pushViewController animation
  • jQuery для переключения анимации
  • Перемещение объектов и таймеров
  • Изменение размеров макетов программным способом (как анимация)
  • Цепи анимации анимации ядра
  • Как создать анимацию «Пожалуйста, подождите, загрузка ...» с помощью jQuery?
  • В JavaFX как перемещать спрайт по экрану?
  • iOS8: Что происходит с перемещением просмотров при переходе на клавиатуру?
  • Как я могу анимировать представление в Android и оставить его в новой позиции / размере?
  • анимация addSubview
  • css3 анимация on: hover; заставить всю анимацию
  • Давайте будем гением компьютера.