今天,简单讲讲android如何控制



系统状态栏的隐藏和显示。

昨天遇到这个问题,找了好久资料才解决,这里记录一下。

网上流传着很多种做法。比如:
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) //显示状态栏

方法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.显示与隐藏状态栏的代码如下:

private void fullscreen(boolean enable) {

if (enable) { //显示状态栏

WindowManager.LayoutParams lp = getWindow().getAttributes();

lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;

getWindow().setAttributes(lp);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

} else { //隐藏状态栏

WindowManager.LayoutParams lp = getWindow().getAttributes();

lp.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);

getWindow().setAttributes(lp);

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

}

}

2.示与隐藏的效果如下:

步骤阅读

3.横屏与竖屏切换时处理状态栏的显示与隐藏,所以需要配置屏幕切换代码。

AndroidManifest.xml中activity上配置

android:configChanges="orientation|keyboardHidden|screenSize"

4.activity中override方法onConfigurationChanged

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE ){//横屏

}else if( this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT ){//竖屏

}

}

注意事项

  • AndroidManifest.xml中activity配置android:configChanges="orientation|keyboardHidden|screenSize"
  • override方法onConfigurationChanged

android 系统状态栏的隐藏和显示就讲完了。

就这么简单。

android 系统状态栏的隐藏和显示相关推荐

  1. android h5状态栏消息,安卓实现系统状态栏的隐藏和显示

    尤其视频类APP,需要实现切换到横屏后,隐藏系统状态栏,全屏显示,以实现看更大画面的视频.当切换回竖屏后,又显示状态栏.那么如何实现呢? 网上流传着很多种做法.比如: 1.在AndroidManife ...

  2. Android系统状态栏的信号图标显示流程简介

    一方面,NetworkControllerImpl.java通过onRecieve方法接收Ril发送的广播,首先,获取广播发送的Intent的action,根据广播的类型(有这几大:wifi类型,电话 ...

  3. Android中状态栏的隐藏

    Android中状态栏的隐藏 系统中状态栏的隐藏 定制系统的时候,想去掉系统中的状态栏,系统中的状态栏隐藏的可在framework中的SystemUI.apk中修改实现. SystemUI.apk代码 ...

  4. android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...

    [填空题]Android 系统中, 用于定义布局显示在界面上的风格. 更多相关问题 [37]A.anotherB.each otherC.the otherD.one another Tabor ma ...

  5. android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...

    Android 5.0(API 21)之后就可以对系统状态栏进行设置了,这里我不是想深入讨论对系统状态栏的一些高级设置,因为一般也用不到,我只想说最常见的两种场景 隐藏系统状态栏,这就是感觉很牛逼的沉 ...

  6. android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示

    在Android应用中我们可能会碰到这样的需求,隐藏状态栏或者状态栏和应用背景一样的颜色,比如下图: 状态栏和背景一个颜色 Android应用程序的界面上系统元素构成如下图: 在4.1之后的系统,隐藏 ...

  7. android 工具栏透明,Android 系统状态栏沉浸式/透明化完整解决方案

    前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来的相对靠谱的一套解决方案. 如果是android大牛可以忽略本文,怕让您贱笑.只面 ...

  8. android顶部状态栏动态隐藏和恢复,3种Android隐藏顶部状态栏及标题栏的方法

    本文包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法,分享给大家供大家参考,具体内容如下 public class MainActivity extends Acti ...

  9. Android 输入法键盘的隐藏和显示

     1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Con ...

最新文章

  1. Android Service
  2. Linux 使用者身份與群組記錄的檔案
  3. 用Spotlight on windows 实时监控Windows服务器性能
  4. [POJ2155] Matrix(二维线段树,树套树)
  5. UVA 10404 - Bachet's Game
  6. 解决C# Repeater内嵌Repeater 数据绑定,以及第二次层Repeater的ItemDataBound事件怎么处理...
  7. 历史上杀伤力最大的笑话!!!
  8. 查看系统中支持CUDA的设备数量和属性---deviceQuery示例
  9. mybatis传入参数类型parameterType详解
  10. windbg远程调试方法
  11. 《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式...
  12. 本地idea运行spark,A master URL must be set in your configuration
  13. python实现移除某文件夹下所有文件
  14. 网页元素3D效果展示
  15. WiFi开发视频教程分享 | 免费下载
  16. 屋顶材料/光伏板美标ASTM E108防火阻燃等级怎么分类
  17. npm scripts
  18. 彻底征服 React.js + Flux + Redux【讲师辅导】-曾亮-专题视频课程
  19. 《C语言及程序设计初步》网络课程主页
  20. 软件开发模型/原型法/瀑布模型/螺旋模型

热门文章

  1. 05模块-barcode【条码扫描】
  2. 软测homework2
  3. 新开activity并且新旧窗口之间传值
  4. 自定义Chrome 滚动条样式
  5. MySQL 优化之 index_merge (索引合并)
  6. seo技巧-2015/10/05
  7. 【C11】float
  8. [转]ColorMatrixFilter--颜色矩阵滤镜
  9. Java selenium操作下拉滚动条的几种方法
  10. Ubuntu18.04提示wifi无法连接