天天看点

Android 全面屏适配手稿

早起4.1系统及一下采用主题或者WindowManager.layoutParams 进行控制

1.可以设置WindowManager.LayoutParams 、或者 view.xxx. view.支持的flag更多flag      
  1. 防止内容因为statebar 的隐藏而reset

    3.4.1 或者 大于4.1 系统采用 setSystemUiVisibility(),设置View标志比使用WindowManager标志使您对系统栏的控制更为精细。

  2. onResume() or onWindowFocusChanged(). 中进行状态栏额调节,因为 setSystemUiVisibility()只有在看的见的时刻有效果

5.如果想让内容在状态栏之后,只需要调整SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.。同样可以添加system_ui_flag_layout_stable 帮助你

或得更加稳定的布局

6.当然需要添加fitsSystemWindows 在根布局,告诉系统预留部分区域给状态icon。防止点击到系统状态栏图标。造成点击事件无效。

同样可以复写fitSystemWindows(Rect insets) 对状态栏的高度进行定制

隐藏导航栏

1.一般来说导航栏和状态栏需要同时隐藏,设计app时候需要考虑到。系统提供e SYSTEM_UI_FLAG_HIDE_NAVIGATION ,来同时控制状态栏和导航栏。

systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN

采用如上这种方式,在用户触摸屏幕会清除这两个flag,那么如果需要再次隐藏,就需要重新设置了。设置方式在onresume 或者 onwindowFocusChanged()。

离开视图导航会导致setSystemUiVisibility()设置的标志被清除0

2.如果想让视图出现在导航栏的下面,设置System_ui_flag_layout_hide_navigation .为了更加精确的控制,加上System_ui_flag_layout_state 去帮助你获得更稳定的布局。

低辨识度模式

  1. 让用户达到沉浸式模式在视频或者游戏进行中。通过设置decorview.View.System_ui_flag_low_profile 模式。在用户触发屏幕会被清除,如果需要重新设置需要进行监听。
  1. 当然地辨识度模式清除,则需要调用decorview。setsystemuivisibility(0) 即可。

安卓几种模式全面屏

  1. 沉浸式 SYSTEM_UI_FLAG_IMMERSIVE
  2. 粘性沉浸式 SYSTEM_UI_FLAG_IMMERSIVE_STICKY
  3. lean back 模式