今天完成之前向往已久的背景栏滑动渐变的功能,向上滑动是由透明渐变为不透明,向下滑动由不透明渐变为透明。可以友好的进行画面转换,不至于凸凹。
看下之前的效果:
oldtitle.gif图片有点大,我不知道markdown里怎么调整大小,先凑合着吧。
更改之后的效果:
newtitle.gif这是更改之后的效果,是不是看着好多了。
现在分析一下思路:
Screenshot_2016-10-17-17-36-48.pngScreenshot_2016-10-17-17-48-45.png红色边框区域我定为titleHeight,下边黄色边框区域我定为userBackGroundLayoutHeight
好了,知道了两个区域的高度,接下来想一下哪个函数可以用来监听滑动,哈哈,没错就是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的变化最重要,值越小透明度越大。
网友评论