android 系统状态栏的隐藏和显示
今天,简单讲讲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方法,该方法传入的参数可以为:
- View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。
- View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
- View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
- View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
- 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 系统状态栏的隐藏和显示相关推荐
- android h5状态栏消息,安卓实现系统状态栏的隐藏和显示
尤其视频类APP,需要实现切换到横屏后,隐藏系统状态栏,全屏显示,以实现看更大画面的视频.当切换回竖屏后,又显示状态栏.那么如何实现呢? 网上流传着很多种做法.比如: 1.在AndroidManife ...
- Android系统状态栏的信号图标显示流程简介
一方面,NetworkControllerImpl.java通过onRecieve方法接收Ril发送的广播,首先,获取广播发送的Intent的action,根据广播的类型(有这几大:wifi类型,电话 ...
- Android中状态栏的隐藏
Android中状态栏的隐藏 系统中状态栏的隐藏 定制系统的时候,想去掉系统中的状态栏,系统中的状态栏隐藏的可在framework中的SystemUI.apk中修改实现. SystemUI.apk代码 ...
- android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...
[填空题]Android 系统中, 用于定义布局显示在界面上的风格. 更多相关问题 [37]A.anotherB.each otherC.the otherD.one another Tabor ma ...
- android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...
Android 5.0(API 21)之后就可以对系统状态栏进行设置了,这里我不是想深入讨论对系统状态栏的一些高级设置,因为一般也用不到,我只想说最常见的两种场景 隐藏系统状态栏,这就是感觉很牛逼的沉 ...
- android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示
在Android应用中我们可能会碰到这样的需求,隐藏状态栏或者状态栏和应用背景一样的颜色,比如下图: 状态栏和背景一个颜色 Android应用程序的界面上系统元素构成如下图: 在4.1之后的系统,隐藏 ...
- android 工具栏透明,Android 系统状态栏沉浸式/透明化完整解决方案
前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来的相对靠谱的一套解决方案. 如果是android大牛可以忽略本文,怕让您贱笑.只面 ...
- android顶部状态栏动态隐藏和恢复,3种Android隐藏顶部状态栏及标题栏的方法
本文包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法,分享给大家供大家参考,具体内容如下 public class MainActivity extends Acti ...
- Android 输入法键盘的隐藏和显示
1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Con ...
最新文章
- Android Service
- Linux 使用者身份與群組記錄的檔案
- 用Spotlight on windows 实时监控Windows服务器性能
- [POJ2155] Matrix(二维线段树,树套树)
- UVA 10404 - Bachet's Game
- 解决C# Repeater内嵌Repeater 数据绑定,以及第二次层Repeater的ItemDataBound事件怎么处理...
- 历史上杀伤力最大的笑话!!!
- 查看系统中支持CUDA的设备数量和属性---deviceQuery示例
- mybatis传入参数类型parameterType详解
- windbg远程调试方法
- 《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式...
- 本地idea运行spark,A master URL must be set in your configuration
- python实现移除某文件夹下所有文件
- 网页元素3D效果展示
- WiFi开发视频教程分享 | 免费下载
- 屋顶材料/光伏板美标ASTM E108防火阻燃等级怎么分类
- npm scripts
- 彻底征服 React.js + Flux + Redux【讲师辅导】-曾亮-专题视频课程
- 《C语言及程序设计初步》网络课程主页
- 软件开发模型/原型法/瀑布模型/螺旋模型