Android中系统状态栏的隐藏和显示

尤其视频类APP,需要实现切换到横屏后,隐藏系统状态栏,全屏显示,以实现看更大画面的视频。当切换回竖屏后,又显示状态栏。那么如何实现呢?

网上流传着很多种做法。比如:
1、在AndroidManifest.xml文件中修改theme为android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”
2、在setContentView方法前执行如下代码:

requestWindowFeature(Window.FEATURE_NO_TITLE)
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

3、通过View的setSystemUiVisibility方法
4、通过如下代码实现状态栏的隐藏和显示:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) //隐藏状态栏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) //显示状态栏

在我的项目中是要实现如下需求:在当前Activity中,切换到横屏后,不能销毁Activity再重新初始化,并且实现隐藏系统状态栏,全屏显示;当切换回竖屏后,又显示状态栏。另外,我不需要隐藏标题栏。
因此,方法1、2均不适合我。方法3,我采用过,调用setSystemUiVisibility方法,该方法传入的参数可以为:

  1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。
  2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
  3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
  4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
  5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
  7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
  8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

这里我需要传入的是View.SYSTEM_UI_FLAG_FULLSCREEN,可是当我传入该参数后,结果是:只是状态栏消失了,但是位置还在。(测试手机:华为荣耀8 系统是基于Android 7.0的EMUI 5.0;三星galaxy s6 系统是Android 6.0)

最后,使用方法4,成功满足需求。

更多相关文章

  1. Handler Looper源码解析(Android消息传递机制)
  2. Android任务切换方法
  3. Android画板
  4. 错误ava.lang.RuntimeException: Unable to start activity Comp
  5. 深入理解Android(安卓)WebView
  6. Android应用开发——TextView控件属性列表
  7. Android中Service组件详解
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android7.0更换系统默认输入法
  2. xmlpull解析XML
  3. 拆解Google Play Services 4.4,猜想Google
  4. Android代码实现状态选择器
  5. Android(安卓)数据库(3)-----Litepal使用
  6. Phonegap联系人 获取Contacts HTML5,andr
  7. 浅谈Android的Choreographer
  8. 如何加速你的gradle编译
  9. android AsyncTask 源码剖析
  10. 坑爹的minSdkVersion配置