安卓状态栏

一、概述
   最近项目中要求实现一个状态栏全透明的效果,
可以在Activity中进行设置,添加代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();            
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    window.setStatusBarColor(Color.TRANSPARENT);            
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }
1
2
3
4
5
6
7
对于以上这些方法,不能在相关的布局文件中设置fitsSystemWindows为true,不然整个布局会向下移动一个状态栏高度的距离,状态栏还是会显灰白色呈现出来。


Android6.0系统以上可以给状态栏文字颜色改成黑色,代码如下:

public static void setStatusBarMode(Activity activity, boolean bDark) {
        //6.0以上
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Window window = activity.getWindow();
            View decorView = window.getDecorView();

            if (decorView != null) {
                int vis = decorView.getSystemUiVisibility();

                if (bDark) {
                    vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                    window.setStatusBarColor(activity.getResources().getColor(R.color.white));

                } else {
                    vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                    window.setStatusBarColor(activity.getResources()
                                              .getColor(R.color.colorPrimaryDark));
                }
                decorView.setSystemUiVisibility(vis);
            }
        }
    }
 

你可能感兴趣的:(安卓)