我爱编程

Android-TitleBar颜色跟随滚动变化

2018-04-13  本文已影响96人  关玮琳linSir

Android-TitleBar颜色跟随滚动变化

效果: 目前很多主流app都实现了,当我们在首页在屏幕滑动的时候TitleBar的颜色随之变动。

其实实现的原理主要基于relativeLayout.setBackgroundColor(Color.argb(alpha.toInt(), 255, 255, 255))这样一个方法,有了这样一个方法,我们便可以监听recyclerView的滚动,然后动态设置它的背景颜色。

代码:

recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                mDistanceY += dy
                //toolbar的高度
                val toolbarHeight = 56 * 3;

                //当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果
                if (mDistanceY <= toolbarHeight) {
                    val scale = mDistanceY.toFloat() / toolbarHeight
                    val alpha = scale * 255
                    relativeLayout.setBackgroundColor(Color.argb(alpha.toInt(), 255, 255, 255))
                } else {
                    //上述虽然判断了滑动距离与toolbar高度相等的情况,但是实际测试时发现,标题栏的背景色
                    //很少能达到完全不透明的情况,所以这里又判断了滑动距离大于toolbar高度的情况,
                    //将标题栏的颜色设置为完全不透明状态
                    relativeLayout.setBackgroundResource(R.color.colorWhite)
                }

            }
        })

整体实现起来非常简单,当然我们可以根据实际项目的需要进行优化~

上一篇下一篇

猜你喜欢

热点阅读