Android系统栏相关(SystemBar)

Android系统栏相关(SystemBar)

基础知识,仅作备忘

SystemBar是用来展示通知、表现设备状态和完成设备导航的屏幕区域。主要包括状态栏(1:status bar)和导航栏(2:navigation bar)。借用官方的图,如下所示,我们可以根据需要对SystemBar进行一些操作,满足自己的需求。
SystemBar

淡化SystemBar (View.SYSTEM_UI_FLAG_LOW_PROFILE)

从API14,即4.0开始,我们可以借助View.SYSTEM_UI_FLAG_LOW_PROFILE来淡化SystemBar,以突出内容区域。

当你使用这个方法的时候,内容区域的大小并不会发生变化,只是系统栏的图标会收起来。一旦用户触摸状态栏或者是导航栏的时候,这两个系统栏就又都会完全显示(无透明度)。
这种方法的优势是SystemBar仍然可见,但是它们的细节被隐藏掉了,因此可以在不牺牲快捷访问系统栏的情况下创建一个沉浸式的体验。
设置代码:

mView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

如图所示:
淡化SystemBar的正常页面
一旦用户触摸到状态栏或者是系统栏,这个标签就会被清除,使系统栏重新显现(无透明度)。在标签被清除的情况下,如果你想重新淡化系统栏就必须重新设定这个标签。

或者我们也可以通过代码直接清除该标志:

mView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);

如图所示:
没有淡化SystemBar的正常页面
View.SYSTEM_UI_FLAG_VISIBLE表示请求系统显示SystemBar.

隐藏SystemBar

在Api15及其之下,可以通过设置Window的Flag标志来达到全屏目的,一般两个标志位同时设置:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN)

  1. WindowManager.LayoutParams.FLAG_FULLSCREEN

    设置全屏模式,隐藏窗口装饰。除了动态设置外,还可以在主题中设置windowFullscreen属性来达到全屏目的。

  2. WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN

    设置了FLAG_LAYOUT_IN_SCREEN之后,可以拥有与启用FLAG_FULLSCREEN相同的屏幕区域。这个方法防止了状态栏隐藏和显示时,内容区域的大小变化。但是此时,状态栏应该是在压在内容区域之上,所以需要自己处理布局,防止状态栏遮盖重要的内容区域。

当你设置WindowManager标签之后(无论是通过Activity主题还是动态设置),这个标签都会一直生效直到你清除它。这点和View.setSystemUiVisibility设置有本质的区别。

在Api16及其之上,可以通过View.setSystemUiVisibility来设置。该方法可以用来控制SystemBar的显示和隐藏,下面简单介绍下其可以设置的Flag:
最重要的两个Flag:

  1. View.SYSTEM_UI_FLAG_IMMERSIVE Api19 (控制SYSTEM_UI_FLAG_HIDE_NAVIGATION flag是否能被用户交互行为所清除)

    If this flag is not set, SYSTEM_UI_FLAG_HIDE_NAVIGATION will be force cleared by the system on any user interaction。如果没有设置该flag,那么任何用户交互行为都会清除SYSTEM_UI_FLAG_HIDE_NAVIGATION flag,从而导致导航栏重新显示出来。

    Since this flag is a modifier for SYSTEM_UI_FLAG_HIDE_NAVIGATION,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值