沉浸式体验三:导航栏

导航栏的隐藏

此文主要描述如何在 API level 14 及以上去隐藏导航栏,建议同时搭配 隐藏状态栏 使用以达到更好的沉浸式体验。

导航栏图片
图一.导航栏

隐藏导航栏


可以通过设置标志 SYSTEM_UI_FLAG_HIDE_NAVIGATION 来隐藏导航栏,下面的示例代码同时隐藏了状态栏:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
  • 使用该方法后,用户任何的屏幕触控操作都会导致标志位的移除,从而使状态栏和导航栏重新显示出来。
  • 一旦标志位被清除,你需要重新设置标志位如果需要隐藏系统栏的话。响应系统UI变化提供了一种方式去根据系统栏的变化而做出自己的响应。
  • 设置 UI 标志位的位置会产生不同的效果。比如在 activity 的 onCreate() 方法中隐藏系统栏后,用户点击了 Home 键,系统栏就会再次出现,当用户再次打开该 activity 的时候,因为 onCreate() 不会被再次调用,所以系统栏就不会不执行隐藏。如果想要一直保持系统栏的不可见,那就应该在 onResume() 或者 onWidowFocusChange() 中设置 UI 标志位。
  • setSystemUiVisibility() 方法只有当调用该方法的视图 view 可见的时候才会生效。
  • 导航离开该页面会导致该视图 view 通过 setSystemUiVisibility() 设置的标志位被清除。

显示内容在导航栏下

在 Android 4.1 及以上版本中,可以实现应用内容显示在导航栏下,这样内容大小就不会当导航栏显示或隐藏时产生改变。为了实现这种效果,使用 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 标志,同时为了布局稳定性再增加 SYSTEM_UI_FLAG_LAYOUT_STABLE 标志。

当采用此方式时,同样要像隐藏状态栏一样,注意关键内容不会被导航栏遮挡。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值