首页 > 解决方案 > Android ViewPager Fade 仅在向左滑动时有效

问题描述

我正在开发一个应用程序,它的主视图带有ViewPager. 这可以通过向左或向右滑动来循环不同的游戏。我已经制作了fade-in文件fade-out XML以在背景中淡化 ImageView。但是,这仅在我向左滑动时按预期工作,而不是相反。这怎么可能发生?

onPageScrolled这是我进行淡入淡出的 ViewPager方法。请记住,它在向左滑动时有效。

override fun onPageScrolled(
            position: Int,
            positionOffset: Float,
            positionOffsetPixels: Int
        ) {
            this.position = position

            if(position >= (adapter.count - 1) && position >= (backgrounds.size - 1)){
                this.position = backgrounds.size - 1
            }

            bottomBG.setBackgroundResource(previousBG)
            val fadeOut: Animation = AnimationUtils.loadAnimation(context, R.anim.fade_out)
            bg.startAnimation(fadeOut)
            bg.setBackgroundResource(backgrounds[this.position])
            val fadeIn: Animation = AnimationUtils.loadAnimation(context, R.anim.fade_in)
            bg.startAnimation(fadeIn)
            previousBG = backgrounds[this.position]
        }

代码的简短解释:我最初检查位置是否在背景列表的末尾并将其设置在那里。这是一些旧的逻辑,如果我来到列表的末尾,它会有所不同。

bottomBG位于淡入淡出ImageView下方,ImageView因为它以一种奇怪的方式淡出。

动画线条应该是不言自明的。

我设置了backgroundResource´ to the background located at the 位置`。

最后,我将 设置previousBG为当前背景,以便它正确淡出bottomBG ImageView.

标签: androidkotlinandroid-viewpager

解决方案


推荐阅读