首先是两个开启沉浸模式和关闭沉浸模式的函数
@SuppressLint("NewApi")
public static void hideSystemUI(View view) {
viewsetSystemUiVisibility(ViewSYSTEM_UI_FLAG_LAYOUT_STABLE
| ViewSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| ViewSYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| ViewSYSTEM_UI_FLAG_HIDE_NAVIGATION
| ViewSYSTEM_UI_FLAG_FULLSCREEN
| ViewSYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
@SuppressLint("NewApi")
public static void showSystemUI(View view) {
viewsetSystemUiVisibility(
ViewSYSTEM_UI_FLAG_LAYOUT_STABLE
| ViewSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| ViewSYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
这些代码可以在google的开发者文档中找到,可以看这里Using Immersive Full-Screen Mode,上面的代码是在Android 44中才会生效,对应的Android版本兼容的判断请自行处理。
此外还需要一个辅助函数,用于获得状态栏高度,使用反射获得。
/
获状态栏高度
@param context 上下文
@return 通知栏高度
/
public int getStatusBarHeight(Context context) {
int statusBarHeight = 0;
try {
Class<> clazz = ClassforName("comandroidinternalR$dimen");
Object obj = clazznewInstance();
Field field = clazzgetField("status_bar_height");
int temp = IntegerparseInt(fieldget(obj)toString());
statusBarHeight = contextgetResources()getDimensionPixelSize(temp);
} catch (Exception e) {
eprintStackTrace();
}
return statusBarHeight;
}
点击hide按钮进入沉浸模式,也就是隐藏状态栏,隐藏状态栏的同时我们需要修改Toolbar的上内边距,否则会显得很难看,这里注册一个监听OnSystemUiVisibilityChangeListener,当进入沉浸模式后我们改变Toolbar的上内边距
hidesetOnClickListener(new ViewOnClickListener() {
@Override
public void onClick(View v) {
View view = getWindow()getDecorView();
hideSystemUI(view);
mToolbarsetOnSystemUiVisibilityChangeListener(new ViewOnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
mToolbarsetPadding(mToolbargetPaddingLeft(), 0,mToolbargetPaddingRight(), mToolbargetPaddingBottom());
}
});
}
});
进入沉浸模式后,手指从屏幕顶部向下划,状态栏就出现了,过2秒左右它又会自动消失。
点击show按钮退出沉浸模式,同时Toolbar的内边距也要增加到状态栏的高度。
showsetOnClickListener(new ViewOnClickListener() {
@Override
public void onClick(View v) {
View view = getWindow()getDecorView();
showSystemUI(view);
mToolbarsetOnSystemUiVisibilityChangeListener(new ViewOnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
mToolbarsetPadding(mToolbargetPaddingLeft(), getStatusBarHeight(MainActivitythis),mToolbargetPaddingRight(), mToolbargetPaddingBottom());
}
});
}
});
如果使用的是SystemBarTintManager这个类进行的状态栏的着色,除上方的操作外,还要在对应的监听里增加状态栏着色的禁止和启动的功能。
进入沉浸模式,要禁用
tintManagersetStatusBarTintEnabled(false);
退出沉浸模式,要启动
tintManagersetStatusBarTintEnabled(true);
如果你想更加平滑,则可以对padding的改成增加动画,具体动画效果自行添加。
可以通过root权限修改本机文件把状状态栏改成透明的。
具体步骤如下:
1打开RE管理器,找到storage,打开;
2打开sdcard0。再打开QQBrowser;
3复制里面的ui apk文件;
4回到初级菜单,点击system;
5点击app,点击读写,变成只读;
6点击粘贴。
准备工作:
1一部root之后的手机(安卓版本大于43)
2安装Xposed框架
沉浸式状态栏安装方法:
1打开Xposed框架,点击下载,再点选搜索图标。
2搜索框中输入Flat Style colored Bars
3下载后并安装软件
4安装后,在Xposed的“模块”中勾选软件,并重启。重启后软件即生效,但是部分软件需要重新设置。用此软件进行透明状态栏,拾取颜色操作。
5状态栏设置中,我们可以忽略软件,也能选择图标的前景色和后景色。
设置按钮打开后可以单独设置软件沉浸是状态栏,如果发现某款软件没有变色,就打开,设置完毕就关机,简单粗暴。
6演示状态栏透明教程
<1>点击左上角白色设置按钮,点击背景色。
<2>由于是透明,所有着色全部设置为0%,点击Apply。怎么样,效果出现了吧。
7演示颜色选择使用教程
<1>打开QQ程序之后会发现状态栏是白色,没有跟程序中的“蓝色”相沉浸。这种不伦不类绝对不能忍啊。点击白色园钮开启设置,再点击背景色
<2>点击"Take color from screen" 从屏幕中选择颜色,再点击你想要它变成的颜色位置。选择之后再点击右下角的"apply",设置完成。
状态栏一直显示QQ正在运行就是QQ处于后台模式。
QQ显示正在运行的意思是QQ在手机里面运行,但是当前没有使用这个程序,就是后台运行。QQ后台运行的时候,如果想使用程序,直接点击即可,而不用重新打开。后台运行QQ时候比较费电,如果想省点的话不用QQ时候建议退出后台,延长手机待机时间。状态栏中显示的图标直观地告诉您程序正在运行。
打开状态栏并单击也可以使您快速切换到程序。比如,拉下通知栏,点击正在运行的QQ就会切换到QQ程序界面。状态栏的每个窗口、程序操作界面的最底端,通常是在视图或查看菜单下打开或关闭,就是前面加勾就打开,打叉就关闭的。
状态栏的主要功能:
状态栏是包含文本输出窗格或“指示器”的控制条。输出窗格通常用作消息行和状态指示器。消息行示例包括命令帮助消息行,它简要解释了MFC应用程序向导所创建的默认状态栏的最左边窗格中选定的菜单或工具栏命令。显示当前所打开窗口或软件的状态。拿最简单的窗口,比如说打开我的电脑在状态栏上左侧就会显示当前窗口共有几个对象。
右侧则会显示你所打开的位置。如果打开的是程序,例如:Word,启动程序后在最后一栏中你可以看到当前光标位于第几行第几列,本文档共有几页,当前光标在第几页,还有当前的编辑状态是改写状态或是插入状态等。
1、需要下载下面这两个App
2、打开后你会发现魅族工具箱是红色的,这表明是不能设置沉浸栏。然后你打开Xposed,然后点击激活应用模块,勾选魅族工具箱,然后点击激活。
3、点击激活后会出现安装更新,直接点击安装更新。它会提示你重启你直接重启就行了。重启后你在打开魅族工具箱你会发现变蓝色了,这说明你可以设置沉浸式状态栏了。
4、打开魅族工具箱打开状态栏,前三个都打开就行了,这样沉浸式状态栏就OK啦。看看效果吧!