Android System UI 属性

Android System UI 属性

关于操作SystemUI,包括:StatusBar、ActionBar、NavigationBar

通过View Mode and Layout

可以通过View的一些常量来改变状态栏或者屏幕的一些特性(View.setSystemUiVisibility(UiOptions)(API 11)),具体如下(隐藏系统栏和低能模式会在有app bar时失效):

View.setSystemUiVisibility(int visibility)中,visibility是Mode与Layout任意取值的组合,可传入的实参为:

SystemUiVisibility Mode

  • SYSTEM_UI_FLAG_VISIBLE 0

    请求显示系统UI,默认状态

  • SYSTEM_UI_FLAG_LOW_PROFILE 0x00000001

    低能模式,状态栏上的一些图标会被隐藏,游戏、阅读、视频播放等沉浸式应用会需要

  • SYSTEM_UI_FLAG_HIDE_NAVIGATION 0x00000002

    请求隐藏底部导航栏

  • SYSTEM_UI_FLAG_FULLSCREEN 0x00000004

    请求全屏显示,状态栏会被隐藏,底部导航栏不会被隐藏,效果和WindowManager.LayoutParams.FLAG_FULLSCREEN相同

  • SYSTEM_UI_FLAG_IMMERSIVE 0x00000800

    这个flag只有当设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。如果没有设置这个flag,任意的View相互动作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果设置就不会退出

  • SYSTEM_UI_FLAG_IMMERSIVE_STICKY 0x00001000

    这个flag只有当设置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 时才起作用。如果没有设置这个flag,任意的View相互动作都坏退出SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果设置就不受影响

  • SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 0x00002000

    状态栏浅色背景模式,文字为黑色,Android 6.0以前(api < 23)不支持

SystemUiVisibility Layout

  • SYSTEM_UI_FLAG_LAYOUT_STABLE 0x00000100

    请求系统UI布局稳定状态

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 0x00000400

    让View全屏显示,Layout会被拉伸到StatusBar下面,不包含NavigationBar

  • SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 0x00000200

    让View全屏显示,Layout会被拉伸到NavigationBar下面

通过Window flag 和 Theme(通过设置Widnow flag修改属性)

  • WindowManager.LayoutParams.FLAG_FULLSCREEN:隐藏状态栏全屏显示Window并且会拉伸。可以通过theme中的android.R.attr#windowFullscreen来控制。

  • WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN:允许window contents扩展到屏幕中的缩放区域内,如果有缩放区域的话。 可以通过theme中的android.R.attr#windowOverscan来控制。

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS:使状态栏透明同时会拉伸window到全屏的状态(保留NavigationBar高度),假如有ActionBar,ActionBar依旧会显示。可以通过theme中的android.R.attr#windowTranslucentStatus来控制。

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION:NavigationBar透明同时会拉伸Window到全屏(不保留StatusBar和NavigationBar的高度)。可以通过theme中的android.R.attr#windowTranslucentNavigation来控制。

Window Feature

通过requestFeature来设置Window相关的显示状态。

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

常见Flag:

Window.FEATURE_ACTION_BAR_OVERLAY:请求ActionBar覆盖在window content上面。
Window.FEATURE_NO_TITLE:去除屏幕顶部的标题栏

参考:

http://blog.csdn.net/siobhan/article/details/51018382

你可能感兴趣的:(Android System UI 属性)