相关疑难解决方法(0)

Android:显示/隐藏状态栏/电源栏

我正在尝试创建一个按钮,我可以隐藏或显示平板电脑上的状态栏.

我已经加入了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 statusbar show-hide

39
推荐指数
3
解决办法
9万
查看次数

android从全屏模式退出

我在Android工作.我需要以全屏模式显示我的活动,我使用以下代码完成此操作.

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)

现在它看起来像这样: - 在此输入图像描述

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

在此输入图像描述

我有一个按钮,用于在完全模式或正常模式之间切换,我将一次又一次地切换模式.请建议我怎么做这个.意味着如何从全屏获得正常的屏幕.

先感谢您.

android layoutparams android-windowmanager

14
推荐指数
2
解决办法
2万
查看次数

如何在 Android 中激活/停用全屏模式时禁用状态栏和导航栏动画

问题

激活和停用(沉浸式)全屏模式会导致状态栏和导航栏“淡入”和淡出。动画似乎在不同设备上有所不同,我想完全禁用动画。我的最低目标 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)

我尝试过的

我已经尝试了很多不同的事情并做了很多研究。下面,我想总结一下我已经尝试过的主要方法。

  1. setSystemUiVisibility很多人建议使用getWindow().setFlags更改标志,而不是使用(这似乎是推荐的)。然而,以不同的方式设置标志似乎没有效果。我还认为这已经过时了。
  1. 在活动之间切换时,似乎可以将状态栏和导航栏从退出/进入淡入淡出过渡中排除。然而,这似乎对激活/停用全屏模式没有任何影响。
  1. 有些人只是推荐不同的标志(通常只是为了隐藏栏) - 但动画保持不变。

    View.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

  1. 有些人强调可以覆盖后续动画,overridePendingTransition(0, 0) 但在这种情况下这似乎并不那么有效。

动画看起来是什么样子

只是为了澄清我的意思。下面是显示状态/导航栏动画的 gif 动画(抱歉,我没有嵌入图像的权限)

Android 8.0 / 华为 / 没有淡出动画(两个条都根据需要消失,但动画有淡出)。状态栏和导航栏都会“闪现”。

Android …

animation android statusbar navigationbar

6
推荐指数
0
解决办法
1639
查看次数