情况1. xml:ScrollView包含一个FrameLayout,FrameLayout下包含一个ImageView(ImageView就是占据标题栏和状态栏的图片,需要滚动界面的时候,使ImageView渐变)和一个LinearLayout(这个忽略)
效果图:
ok的代码(请注意圈圈的):
失败的代码
失败的地方(具体效果你们可自己代码测试):
- 刚进入界面的时候,图片不透明(第一行透明代码失效)
- 当快速滑动界面的时候,透明度会乱,也就是就当往下滑动到(快速)顶部时候,图片显示有可能不是全透明的,在不全透明情况下,慢慢往上滑动,就算滑动到界面中间,图片也可能不是全不透明的
我的问题是根据网友的这几行字解决的。
ps:如不是图片,而是一个LinearLayout纯色的透明度渐变,
(使用什么颜色可改变后面的(255 255 255)这三个参数):
//白色全透明
linearLayoutTitle.setBackgroundColor(Color.argb(0, 255, 255, 255));
//透明度随滑动而改变
float scale = (float) mDistanceY / (350 - DensityUtil.dip2px(mCxt, 52));
float alpha = (255 * scale);
linearLayout.setBackgroundColor(Color.argb((int) alpha, 255, 255, 255));
//白色不透明
linearLayoutTitle.setBackgroundColor(Color.argb(255, 255, 255, 255));
情况2:占据状态栏和标题栏的依然是LinearLayout或ImageView,只不过滚动的不再是ScrollView,而是RecyclerView。其它的不变,所以要监听RecyclerView的滑动变化
ok的代码:
主要就是框住的代码。他不像ScrollView那样直接获取dy(视其为高度的变化)就可以了。fffk,之前我一直尝试就单单使用dy,坑了不少时间。
因为很多朋友多觉得安卓状态栏不好处理,额外提供一下链接解决,不谢
https://github.com/niorgai/StatusBarCompat
好Sorry,时间关系,没能用源码解释以上的问题。因为本人已慢慢脱离开发了,为着方便各大朋友,奉献精神应该有噶。。。。