美文网首页
activity顶部栏背景滑动渐变

activity顶部栏背景滑动渐变

作者: 鲁克巴克诗 | 来源:发表于2016-10-17 18:23 被阅读96次

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

    看下之前的效果:

    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的变化最重要,值越小透明度越大。

    相关文章

      网友评论

          本文标题:activity顶部栏背景滑动渐变

          本文链接:https://www.haomeiwen.com/subject/sdxnyttx.html