#android #kotlin #animation
#Android #котлин #Анимация
Вопрос:
У меня есть простая функция анимации затухания для моего приложения для Android, она работает, но проблема, с которой я сталкиваюсь, заключается в том, что после запуска анимации затухания представление ( TextView
в данном случае) не остается затухающим, alpha
значение снова становится 1.
Вот код fadeOut
функции:
fun fadeOut(duration: Long = 100) : AlphaAnimation{
val fadeOut = AlphaAnimation(1f, 0f)
fadeOut.interpolator = DecelerateInterpolator()
fadeOut.duration = duration
return fadeOut
}
И я использую его следующим образом:
myTextView.startAnimation(fadeOut(500))
Любая помощь или совет будут высоко оценены.
Ответ №1:
Я думаю Animation::setFillAfter
, что функция сделала бы это за вас, код был бы таким:
val animation = fadeOut(500)
animation.fillAfter = true
myTextView.startAnimation(animation)
Хотя это решение сохраняет альфа-значение представления только после окончания анимации, если вы хотите изменить видимость представления, вам нужно изменить его, когда анимация заканчивается с помощью Animation.AnimationListener
интерфейса, код будет выглядеть следующим образом:
myTextView.startAnimation(fadeOut(500).apply {
setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
myTextView.visibility = View.GONE
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
})
Ответ №2:
Вы можете установить видимость в обработчике после запуска анимации
myTextView.startAnimation(fadeOut(500))
Handler().postDelayed({
myTextView.visibility = View.GONE
},500)