淡入淡出的字符串列表

Fading List Of Strings In and Out

我是 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]
                }
            }
        })