android - 淡入淡出的字符串列表
问题描述
我对 android 开发很陌生,但目前正在开发一个应用程序。在我的登录页面上,我想让一系列字符串淡入,然后一个接一个地淡出。我一直在尝试使用 AlphaAnimation 并将其重复模式设置为 REVERSE,但我无法弄清楚如何在列表中的元素已经淡入然后淡出后更改文本。任何帮助将不胜感激。
基本上,我认为这个问题存在于 onAnimationRepeat() 函数中,我最终在其中更改了 TextView 的文本。由于 onAnimationRepeat() 函数会使文本淡出,我想我需要等待文本淡出才能更改文本。我是否需要一个 for 循环来遍历字符串列表并在每个字符串上单独运行动画?
请参阅下面的当前代码:
private fun animateLoginBanner() {
var index = 0
val bannerText = resources.getStringArray(R.array.login_banner)
val anim: Animation = AlphaAnimation(0.0f, 1.0f)
anim.duration = 1000
anim.startOffset = 1000
anim.repeatCount = bannerText.size - 1
anim.repeatMode = Animation.REVERSE
anim.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
textView.text = bannerText[index]
}
override fun onAnimationEnd(animation: Animation?) {}
override fun onAnimationRepeat(animation: Animation?) {
index += 1
textView.text = bannerText[index]
}
})
textView.startAnimation(anim)
}
解决方案
未经测试,但也许您可以在侦听器中切换布尔值。您还需要将重复次数加倍。
anim.setAnimationListener(object : Animation.AnimationListener {
var isReversing = false
override fun onAnimationStart(animation: Animation?) {
textView.text = bannerText[index]
}
override fun onAnimationEnd(animation: Animation?) {}
override fun onAnimationRepeat(animation: Animation?) {
isReversing = !isReversing
if (!isReversing) {
index += 1
textView.text = bannerText[index]
}
}
})
推荐阅读
- python - 使用列表列表并进行一些比较 Python
- sorting - 按列长度排序
- ios - 使用 urlsesssion 下载文件
- java - 在 Spark Structured Streaming Java 中保存偏移量
- marklogic - MarkLogic 中的应用服务器费率是如何计算的?
- android - 从渐进式 Web 应用打开 Android 应用
- javascript - Ionic 3 WP-REST API 发布请求 401(未经授权)错误
- javascript - Babel 设置错误:“./src/js/index.js 中的错误”
- c# - 使用 AspNet.Identity UserManager 时的 DetectChanges
- java - GridLayout panel with button and JRadioButton on the second panel问题