Android 安卓透明系统状态栏

Hide the status bar

安卓从4.4开始支持透明系统状态栏(https://developer.android.google.cn/about/versions/android-4.4#UI);

可以通过xml设置主题或代码来设置,记录下代码调整状态栏:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
);

如果通过此代码来调整,将导致系统状态栏和导航栏都将变透明,因将导航栏改为透明后布局会下沉,故不符合需求;

Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}

此代码即可使系统状态栏全透明,且不会影响导航栏。

通过 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR可以修改状态栏字体颜色为黑色,不过此API在 Android 6.0 Marshmallow level 23 才支持:

window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
参考资料

透明系统状态栏
Dim the system bars
StatusNavigationTransparent
Lollipop : draw behind statusBar with its color set to transparent
Android Completely transparent Status Bar?

你可能感兴趣的:(Android 安卓透明系统状态栏)