随着RecycleView的滑动实现标题栏透明度渐变:

让一个布局的背景变色,关键是这行代码:

titlebar.getBackground().setAlpha(int alpha);

布局文件:

随着RecycleView的滑动实现标题栏透明度渐变:_第1张图片


封装一个设置布局背景透明度的方法:

注意:每一种颜色的透明度都是[0,255]

    /**
     * 设置标题栏背景透明度
     * @param alpha 透明度
     */
    private void setSystemBarAlpha(int alpha) {
        if (alpha >= 125) {
            alpha = 125;
        } else {
            //标题栏渐变。a:alpha透明度 r:红 g:绿 b蓝
//        titlebar.setBackgroundColor(Color.rgb(57, 174, 255));//没有透明效果
//        titlebar.setBackgroundColor(Color.argb(alpha, 57, 174, 255));//透明效果是由参数1决定的,透明范围[0,255]
            titlebar.getBackground().setAlpha(alpha);
        }
    }

代码里面,找到titlebar,并使它默认为全透明:

titlebar = (TextView) view.findViewById(R.id.titlebar);
setSystemBarAlpha(0);


监听recycleview的滑动事件:

rv.addOnScrollListener(mOnScrollListener);


    int mDistance = 0;
    int maxDistance = 255;//当距离在[0,255]变化时,透明度在[0,255之间变化]
    //滑动监听事件
    RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
        //dy:每一次竖直滑动增量 向下为正 向上为负
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            mDistance += dy;
            float percent = mDistance * 1f / maxDistance;//百分比
            int alpha = (int) (percent * 255);
//            int argb = Color.argb(alpha, 57, 174, 255);
            setSystemBarAlpha(alpha);
        }
    };

这样就能实现随着recycleview的滑动来动态改变标题栏背景的透明度。


随着RecycleView的滑动实现标题栏透明度渐变:_第2张图片


你可能感兴趣的:(Android)