使用到监听回调,根据scrollY/(screen_height/3f)设置alpha,在ScrollView中设置属性:
android:clipToPadding="false"//该控件的绘制范围是否在padding里面(false:绘制的时候范围会考虑padding,即往里面缩进)
android:clipChildren="false"//子控件是否能超出padding的区域(ScrollView向上滑动时,child可以滑出该区域)

1.xml结构

....

2.在自定义MyScrollView中获取ScrollView滑动的距离,通过距离/屏幕高度的百分比计算出随着滑动的alpha值,并设置监听回调,MyScrollView中的关键代码如下:

 @Override    protected void onScrollChanged(int l, int t, int oldl, int oldt) {        super.onScrollChanged(l, t, oldl, oldt);        //1.获取ScrollView的Y方向的滑动距离        int scrollY = getScrollY();        //2.获取屏幕高度        int heightPixels = getContext().getResources().getDisplayMetrics().heightPixels;        //3.设置滚动范围,当scrollY < 屏幕高度的1/3时,进行设置        float v = heightPixels / 3f;        //4.设置滚动的百分比        float v1 = scrollY / v;//(0-1)        //5.透明度应为1-0        float alpha = 1 - v1;        //7.在必要的时候调用接口中的方法        if(listener!=null){            if(scrollY <= v){                listener.onTranlucent(alpha);            }        }    }    //6.监听回调    private TranslucentListener listener;    public void setListener(TranslucentListener listener) {        this.listener = listener;    }    public interface TranslucentListener{        /**         * 透明度的回调监听         * @param alpha 0~1 透明度         */        public void onTranlucent(float alpha);    }

3.在界面中给toolbar设置透明度

public class ScrollToolBarActivity extends AppCompatActivity implements MyScrollView.TranslucentListener {    private Toolbar toolbar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_scroll_tool_bar);        //给myScrollView设置监听        MyScrollView myScrollView = findViewById(R.id.scv);        myScrollView.setListener(this);        toolbar = findViewById(R.id.toolbar);        setSupportActionBar(toolbar);    }    @Override    public void onTranlucent(float alpha) {        //设置toolbar的透明度 这个方法在ScrollView移动时调用        toolbar.setAlpha(alpha);    }}

4.在xml文件中给MyScrollView设置属性:
android:clipToPadding="false"//该控件的绘制范围是否在padding里面(false:绘制的时候范围会考虑padding,即往里面缩进)
android:clipChildren="false"//子控件是否能超出padding的区域(ScrollView向上滑动时,child可以滑出该区域)
避免ScrollView滑动时,Toolbar的部分出现白色区域。

更多相关文章

  1. Android(安卓)开源框架ActionBarSherlock 和 ViewPager 仿网易新
  2. Android编程: 界面组成、事件监听器
  3. Android(安卓)RecyclerView 设置item之间的间距
  4. Android编程之Android(安卓)Permission 中英对照大全
  5. android listview判断上滑还是下滑
  6. Android(安卓)应用内切换语言 实现多语言功能
  7. Android卡片组件(CardView)
  8. android通过线程实现逐行显示信息
  9. Android实现短信验证码获取自动填写功能(详细版)

随机推荐

  1. android 中生成XML文件的代码
  2. 使用adb命令启动Android程序
  3. ListView.CHOICE_MODE_MULTIPLE
  4. do you know any crossplatform sound ef
  5. Android Post图片和数据
  6. Android 渐变色TextView
  7. android如何获取后台正在运行的service
  8. android使用全局变量的方法
  9. 一些 android 项目
  10. android 使用数据库事务提高操作效率