Android 沉浸式状态栏,上滑页面StatusBar透明度发生变化

参考资料:http://blog.cgsdream.org/2017/03/16/android-translcent-statusbar/
https://blog.csdn.net/coderder/article/details/78294777

开发过程中,首页顶部是一张图片,要求占据全屏幕,状态栏覆盖在图片之上。

首先,activity的theme为:

    

colorPrimaryDark 表示状态栏背景颜色。

怎么实现沉浸式状态栏:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }
        //这里只对api21以上做处理

如果想实现MD,页面上滑,toolbar显示出来,并且statusbar逐渐不透明。
需要给statusbar一个占位view:
activity的XML文件为:





    

        

            

            

                

                

            
            
            //占位statusbar
            

            

            
        

    

    

        
    


java代码中:

        mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                mToolbar.setTitleColor(R.color.color_train_main_text);
                int totalScrollRange = appBarLayout.getTotalScrollRange();
                float offset = (-verticalOffset) / (float) totalScrollRange;
                //toolbar变化
                mStatusBar.setAlpha(offset); //statusbar透明度变化
                mToolbar.getBackground().setAlpha((int) (offset * 255)); //toolbar透明度变化
                mToolbar.getTitleTv().setAlpha(offset);
        });

你可能感兴趣的:(Android 沉浸式状态栏,上滑页面StatusBar透明度发生变化)