activity顶部栏背景滑动渐变

今天完成之前向往已久的背景栏滑动渐变的功能,向上滑动是由透明渐变为不透明,向下滑动由不透明渐变为透明。可以友好的进行画面转换,不至于凸凹。

看下之前的效果:

oldtitle.gif

图片有点大,我不知道markdown里怎么调整大小,先凑合着吧。

更改之后的效果:

newtitle.gif

这是更改之后的效果,是不是看着好多了。


现在分析一下思路:

Screenshot_2016-10-17-17-36-48.png

红色边框区域我定为titleHeight,下边黄色边框区域我定为userBackGroundLayoutHeight

Screenshot_2016-10-17-17-48-45.png

好了,知道了两个区域的高度,接下来想一下哪个函数可以用来监听滑动,哈哈,没错就是ScrollView的onScrollChanged(HoverScrollView scrollView, int x, int y, int oldx, int oldy),这个y值很重要,计算什么时候开始渐变都要靠它呢!

现在我们计算一下开始渐变的高度,定义的是:userBackGroundLayoutHeight - titleHeight * 2

我定义的结束渐变的高度:userBackGroundLayoutHeight - titleHeight

其实这两个高度都可以自己约束,不一定非要向我这样。

if (y >= userBackGroundLayoutHeight - titleHeight * 2 && y <= userBackGroundLayoutHeight - titleHeight) {
            float scale = (float) (y - (userBackGroundLayoutHeight - titleHeight * 2)) / titleHeight;
            int alpha = (int) (255 * scale);
            titleLayout.setBackgroundColor(Color.argb(alpha, 69, 69, 66));
        } else if (y > userBackGroundLayoutHeight - titleHeight) {
            titleLayout.setBackgroundColor(Color.argb(255, 69, 69, 66));
        } else {
            titleLayout.setBackgroundColor(Color.argb(0, 0, 0, 0));
        }

通过这个方法,就可以完成渐变了。

这句代码是设置背景透明度变化titleLayout.setBackgroundColor(Color.argb(alpha, 69, 69, 66));其中alpha的变化最重要,值越小透明度越大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容