Я хочу иметь 2-секундную анимацию ImageView, которая затухает 1000 мс, а затем затухает 1000 мс.
Вот что у меня есть в конструкторе ImageView:
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(1000);
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);
Когда я запускаю эту анимацию, ничего не появляется. Однако, когда я удаляю одну из альфа-анимаций, поведение работает так, как ожидалось.
Вещи, которые я уже пробовал:
- Все мыслимые комбинации
setFillBefore
,setFillAfter
иsetFillEnabled
. - Добавление
LinearInterpolator
кAnimationSet
.
Ответы:
Разобрался с собственной проблемой. Решение оказалось в основе интерполяторов.
Если вы используете Kotlin
источник
Я знаю, что на это уже был дан ответ, но .....
Быстрый и простой способ быстро сделать появление и исчезновение с повторением себя. наслаждаться
РЕДАКТИРОВАТЬ : В вашей деятельности добавить это:
источник
alpha
ресурса, как я могу его использовать? СпасибоviewToAnimate.startAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in_out)
где в папке anim под res находится файл fade_in_out.xml.источник
Вот мое решение с использованием AnimatorSet, которое кажется немного более надежным, чем AnimationSet.
источник
Другая альтернатива:
Нет необходимости определять 2 анимации для fadeIn и fadeOut . fadeOut - это обратная сторона fadeIn .
Таким образом, вы можете сделать это с Animation.REVERSE следующим образом:
затем onAnimationEnd :
источник
Как я полагаю, в силу XML (для макетов), это эквивалентно принятому ответу , но чисто как ресурс анимации:
fillAfter
Для увядания остаться после завершения анимации. Как вы можете догадаться,interpolator
обрабатывает интерполяцию анимации. Вы также можете использовать другие типы интерполяторов, такие как линейный или Overshoot.Обязательно запустите анимацию на виде:
источник
Вот то, что я использовал для постепенного исчезновения в представлениях, надеюсь, это кому-нибудь поможет.
источник
Наборы анимации не работают должным образом. В конце я сдался и использовал postDelayed () класса Handler для последовательности анимаций.
источник
Если вы используете Animator для создания анимации, вы можете
anim (каталог) -> fade_out.xml
В яве
Другой способ заставить анимацию исчезать только с помощью Java-кода:
источник
Вы также можете использовать animationListener, что-то вроде этого:
источник
Мне очень нравится решение Виталия Зинченко, так как оно было коротким.
Вот еще более короткая версия в kotlin для простого исчезновения
источник