我正在尝试创建一个按钮,我可以隐藏或显示平板电脑上的状态栏.
我已经加入了onCreate
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
并在按钮显示:
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
Run Code Online (Sandbox Code Playgroud)
隐藏:
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
Run Code Online (Sandbox Code Playgroud)
任何提示/ tipps?
//编辑
我在这里查看了这个提示:http://android.serverbox.ch/? p = 306 并改变了我的代码:
private void hideStatusBar() throws IOException, InterruptedException {
Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 79 s16 com.android.systemui"});
proc.waitFor();
}
private void showStatusBar() throws IOException, InterruptedException {
Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.android.systemui/.SystemUIService"});
proc.waitFor();
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我点击我的按钮,方法被调用我可以看到发生了什么,因为应用程序正在等待几秒钟.我也调查了LockCat,发现事情正在发生.
显示:http://pastebin.com/CidTRSTi 隐藏:http://pastebin.com/iPS6Kgbp
我在Android工作.我需要以全屏模式显示我的活动,我使用以下代码完成此操作.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
现在它看起来像这样: -

现在我想退出这个完整模式,所以我的活动应该像以前一样显示.像这样:-

我有一个按钮,用于在完全模式或正常模式之间切换,我将一次又一次地切换模式.请建议我怎么做这个.意味着如何从全屏获得正常的屏幕.
先感谢您.
问题
激活和停用(沉浸式)全屏模式会导致状态栏和导航栏“淡入”和淡出。动画似乎在不同设备上有所不同,我想完全禁用动画。我的最低目标 SDK 是 19;但是,我也会对需要更高 API 级别的解决方案感到满意。请参阅下文了解更多详情。
运行演示
我实现了一个(最小的)演示,以便人们可以轻松测试。一切都可以在 GitHub 上找到:
为了澄清起见,我使用setSystemUiVisibility(FLAGS)激活/停用全屏模式。此外,我使用以下标志:
激活全屏模式:
int visibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mainView.setSystemUiVisibility(visibility);
Run Code Online (Sandbox Code Playgroud)
停用全屏模式:
int visibility = View.SYSTEM_UI_FLAG_VISIBLE;
mainView.setSystemUiVisibility(visibility);
Run Code Online (Sandbox Code Playgroud)
我尝试过的
我已经尝试了很多不同的事情并做了很多研究。下面,我想总结一下我已经尝试过的主要方法。
setSystemUiVisibility很多人建议使用getWindow().setFlags更改标志,而不是使用(这似乎是推荐的)。然而,以不同的方式设置标志似乎没有效果。我还认为这已经过时了。有些人只是推荐不同的标志(通常只是为了隐藏栏) - 但动画保持不变。
View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
overridePendingTransition(0, 0)
但在这种情况下这似乎并不那么有效。动画看起来是什么样子
只是为了澄清我的意思。下面是显示状态/导航栏动画的 gif 动画(抱歉,我没有嵌入图像的权限)
Android 8.0 / 华为 / 没有淡出动画(两个条都根据需要消失,但动画有淡出)。状态栏和导航栏都会“闪现”。
Android …