android系统状态栏与虚拟键导航栏与标题栏控制

来源:互联网 发布:山东竞彩网络实体店 编辑:程序博客网 时间:2024/05/17 21:54

状态栏与虚拟键


注意的是,低版本系统中是没有虚拟键盘的。

高版本系统中通过decorView控制状态栏与虚拟键导航栏:

如SDK>=16系统中隐藏状态栏代码如下:

if (Build.VERSION.SDK_INT >= 16) {            View decorView = getWindow().getDecorView();            decorView.setSystemUiVisibility(                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                     | View.SYSTEM_UI_FLAG_FULLSCREEN);        } 

常见的设置有以下几个:

View.SYSTEM_UI_FLAG_FULLSCREEN; //全屏,状态栏视图不显示        View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;    //隐藏导航栏视图        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;  //全屏,状态栏布局隐藏不显示        View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; //隐藏导航栏布局        View.SYSTEM_UI_FLAG_LAYOUT_STABLE;//稳定模式,相当于对布局设置fitSystemWindows        View.SYSTEM_UI_FLAG_LOW_PROFILE;//低轮廓模式,多用于游戏、视频、阅读器等应用中        View.SYSTEM_UI_FLAG_VISIBLE;//显示状态栏和导航栏

View.SYSTEM_UI_FLAG_LAYOUT_STABLE说明

带有LAYOUT的是针对布局的,比如View.SYSTEM_UI_FLAG_HIDE_NAVIGATION是隐藏导航栏,可是导航栏所在的布局不会隐藏还是会保留的,应用content内容大小没有变化,导航栏位置还是存在,类似于对view设置INVISIABLE,如果同时设置了View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN是隐藏整个布局,类似与设置GONE的效果,应用内容content布局大小会改变。

View.SYSTEM_UI_FLAG_LAYOUT_STABLE:设置了这个后,内容布局是自适应的,效果类似于:

 android:fitsSystemWindows="true"

如果要完全隐藏,应用内容布局自动占据调要隐藏的布局,必须要设置这个才会生效,不然不会起效的,比如你设置了:

View.SYSTEM_UI_FLAG_FULLSCREEN

你会发现它与以下的设置是一样的效果,状态栏是不可见了,但是它 的位置保留着(就是状态栏显示空白或者透明)。

一起设置下面的两个:

    View.SYSTEM_UI_FLAG_LAYOUT_STABLE|    View.SYSTEM_UI_FLAG_FULLSCREEN

状态栏完全消失,应用内容大小适应了屏幕大小。说明这个参数是告诉系统,我想内容布局自适应起来。


带LAYOUT是说明:

对于带layout的设置指的是布局隐藏,比如View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:设置了这个后,状态栏布局会隐藏调,但是状态栏还是可见的,只是应用内容布局会伸缩适应全屏。
View.SYSTEM_UI_FLAG_FULLSCREEN:设置了这个后,状态栏视图会隐藏,内容布局大小不变。


下面是测试的一些效果:


* View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN*
状态栏视图可见,布局被隐藏,应用内容大小高度增加了状态栏的高度,标题栏视图与布局存在。


View.SYSTEM_UI_FLAG_FULLSCREEN

状态栏视图不可见,布局存在,应用内容大小高度没有变化,标题栏视图与布局存在。


View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
* View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN*

状态栏与标题栏视图可见,布局被隐藏,应用内容大小高度增加了状态栏与标题栏的高度。


View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
* View.SYSTEM_UI_FLAG_FULLSCREEN*
状态栏与标题栏视图不可见,状态栏布局存在,标题栏布局不存在,应用内容大小高度增加了标题栏高度。

标题栏控制

代码隐藏标题栏:

requestWindowFeature(Window.FEATURE_NO_TITLE);          

通过activity主题控制:

android:theme="@style/android:Theme.Light.NoTitleBar"

下面实现爱掌阅读阅读器的效果:进入阅读器界面是,沉浸式,就是全屏,标题栏状态栏全部去掉,点击中间菜单,显示菜单时同时显示状态栏,状态栏是覆盖在阅读器view上面的,点击菜单消失,状态栏消失。

requestWindowFeature(Window.FEATURE_NO_TITLE);  //去掉标题栏        if (Build.VERSION.SDK_INT >= 16) {            View decorView = getWindow().getDecorView();            decorView.setSystemUiVisibility(                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE|//启动界面自适应                     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|//去掉状态栏布局                     View.SYSTEM_UI_FLAG_FULLSCREEN//去掉状态栏视图                     |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                     |View.SYSTEM_UI_FLAG_LOW_PROFILE);//低能模式        } 

注意这个要放在setContentView之前;

点击菜单时:

if (Build.VERSION.SDK_INT >= 16) {            View decorView = getWindow().getDecorView();            decorView.setSystemUiVisibility(                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|//去掉状态栏布局                     View.SYSTEM_UI_FLAG_VISIBLE//显示正常,显示状态栏与虚假键                     );        } 

菜单消失时:

if (Build.VERSION.SDK_INT >= 16) {            View decorView = getWindow().getDecorView();            View.SYSTEM_UI_FLAG_LAYOUT_STABLE|//启动界面自适应                     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|//去掉状态栏布局                     View.SYSTEM_UI_FLAG_FULLSCREEN//去掉状态栏视图                     |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                     |View.SYSTEM_UI_FLAG_LOW_PROFILE);//低能模式        } 
0 0
原创粉丝点击