我们在使用Scroview滑动的过程中有可能需要通过测量滑动了多少来动态修改某个空间的颜色
实现效果如图所示
期初状态栏颜色为透明色,随着Scroview向下互动的过程中状态栏的颜色随之慢慢变成白色
最后当Scroview滑动到第一个view的高度的时候完全变成白色
此时状态栏已经完全变成白色
想要实现这个效果 首先需要两个view :一个是标题栏为一个RelativeLayout的布局 ,一个是scroview里面的第一个Imageview
1.标题栏是为了制定要渐变的控件
2.scroview里面的第一个Imageview,是以第一个ImageView的高度为控件渐变的百分比从而实现标题栏控件的透明度渐变
rl_title=(RelativeLayout) findViewById(R.id.rl_title);//标题栏
iv_01=(ImageView) findViewById(R.id.iv_01);//第一个View
myscroll=(MyChangeScrollView) findViewById(R.id.myscroll);//自定义Scroview
myscroll.setupTitleView(rl_title);//把要进行透明度渐变的view加入到自定义scroview中
myscroll.setupByWhichView(iv_01);//以iv_01的高度为滑动基准进行透明度渐变
主要重写Scroview的onOverScrolled方法
- protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX,
- boolean clampedY) {
onOverScrolled方法的 scrollY即为ScrollView滑动距离远点的Y轴的距离
判断当scrollY>第一个image的高度时设置标题栏背景色为白色
如果scrollY的高度小于image的高度此时滑动即要计算透明度
float persent = scrollY* 1f/ (mByWhichView.getTop() + mByWhichView.getMeasuredHeight());//度数范围为 0-->1
当persent为1时即 ScrollY的高度等于 第一个Image的高度的时候设置透明度为不透明
int alpha = (int) (255 * persent);
int color = Color.argb(alpha, 255, 255, 255);//白色的rgb为 255,255,255(可以通过查找RGB表来实现不同颜色的透明度渐变)
下载地址:http://download.csdn.net/detail/xiaoqiang_0719/9586832