Анимация TextView - затухание, ожидание, исчезновение
Я делаю приложение для картинной галереи. В настоящее время у меня есть изображение с текстовым представлением внизу. В настоящее время он просто полупрозрачен. Я хочу, чтобы он исчез, подождите 3 секунды, а затем исчезнет на 90%. Привлечение внимания к нему или загрузка нового рисунка заставят его повторить цикл. Я прочитал через десяток страниц и пробовал несколько вещей, никаких успехов. Все, что я получаю, - это постепенное исчезновение и мгновенное исчезновение.
Ответы
Ответ 1
Вы можете использовать дополнительный объект анимации (который не изменяет его альфу), чтобы предотвратить мгновенное исчезновение, установить анимационный эффект для вашего эффекта постепенного затухания и запустить дополнительный объект анимации в анимации анимации и Fade-in, то вы начинаете исчезать на конце анимации дополнительного объекта анимации, попробуйте ссылку ниже, это поможет..
Автоматический эффект затухания для текстового просмотра
Ответ 2
protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f ) ;
protected AlphaAnimation fadeOut = new AlphaAnimation( 1.0f , 0.0f ) ;
txtView.startAnimation(fadeIn);
txtView.startAnimation(fadeOut);
fadeIn.setDuration(1200);
fadeIn.setFillAfter(true);
fadeOut.setDuration(1200);
fadeOut.setFillAfter(true);
fadeOut.setStartOffset(4200+fadeIn.getStartOffset());
Прекрасно работает на белом фоне. В противном случае вам нужно переключать значения при создании экземпляра класса AlphaAnimation
. Вот так:
AlphaAnimation fadeIn = new AlphaAnimation( 1.0f , 0.0f );
AlphaAnimation fadeOut = new AlphaAnimation(0.0f , 1.0f );
Это работает с черным фоном и белым цветом текста.
Ответ 3
Это решение, которое я использовал в моем проекте для циклизации анимации fade-in/fade-out в TextViews:
private void setUpFadeAnimation(final TextView textView) {
// Start from 0.1f if you desire 90% fade animation
final Animation fadeIn = new AlphaAnimation(0.0f, 1.0f);
fadeIn.setDuration(1000);
fadeIn.setStartOffset(3000);
// End to 0.1f if you desire 90% fade animation
final Animation fadeOut = new AlphaAnimation(1.0f, 0.0f);
fadeOut.setDuration(1000);
fadeOut.setStartOffset(3000);
fadeIn.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
// start fadeOut when fadeIn ends (continue)
textView.startAnimation(fadeOut);
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationStart(Animation arg0) {
}
});
fadeOut.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
// start fadeIn when fadeOut ends (repeat)
textView.startAnimation(fadeIn);
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationStart(Animation arg0) {
}
});
textView.startAnimation(fadeOut);
}
Надеюсь, это поможет!
Ответ 4
Функции расширения Kotlin для ответа Гая Котала:
inline fun View.fadeIn(durationMillis: Long = 250) {
this.startAnimation(AlphaAnimation(0F, 1F).apply {
duration = durationMillis
fillAfter = true
})
}
inline fun View.fadeOut(durationMillis: Long = 250) {
this.startAnimation(AlphaAnimation(1F, 0F).apply {
duration = durationMillis
fillAfter = true
})
}