java - 切换 Activity 时导航栏短暂出现

标签 java android nexus-7

我目前正在为 Nexus 7 平板电脑编写具有完全全屏体验的 Android 应用(系统栏和导航栏只有在用户向下滑动时才会显示)。

出于某种原因,当我切换 Activity 时,导航栏会短暂地重新出现。

为了创建全屏效果,我在每个 Activity 的 onResume() 中将系统 UI 可见性设置为预定选项,注册一个 UI 更改监听器,并注册一个窗口焦点监听器。

用户界面选项

private View decorView = getWindow().getDecorView();

private int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

在 onResume() 中设置系统 UI 可见性

@Override
protected void onResume() {

    super.onResume();

    decorView.setSystemUiVisibility(uiOptions);

}

在 UI 更改时设置系统 UI 可见性

decorView.setOnSystemUiVisibilityChangeListener (
            new View.OnSystemUiVisibilityChangeListener() {

                @Override
                public void onSystemUiVisibilityChange(int pVisibility) {

                    if ((pVisibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                        decorView.setSystemUiVisibility(uiOptions);
                    }

                }

});

在窗口获得焦点时设置系统 UI 可见性

@Override
public void onWindowFocusChanged(boolean pHasFocus) {

    super.onWindowFocusChanged(pHasFocus);

    if(pHasFocus) {
        decorView.setSystemUiVisibility(uiOptions);
    }

}

以上所有事情都在应用程序的每个 Activity 中完成,以确保 当键盘消失, Activity 恢复时,导航栏和状态栏被隐藏, 等等

但是,我仍然遇到切换时导航栏短暂出现的问题 Activity 。

非常感谢任何帮助!谢谢。

最佳答案

您需要使用应用程序和 Activity 样式的主题,如下所述:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" works on Application level but not at the activity level. Any clue? .这些是在创建 View 时应用的,而不是像您一样在 onResume 中创建后删除它们。

基本上,您需要为没有标题栏/操作栏的应用程序设置一个主题(如果您已经有一个主题,让它扩展这个主题):

<application
    ...
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
</application>

同样适用于每个 Activity :

<activity

     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
     ...
</activity>

在 Activity 的 onCreate 中:

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

关于java - 切换 Activity 时导航栏短暂出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25901135/

相关文章:

android - android "nexus 7"2013 的哪个版本的 adb 接口(interface)

使用nexus 7从相机进行的Android视频记录返回空数据

java - OpenJPA OptimisticLockException : Detaching object from one PersistenceUnit and saving it to another

java - 在 .bash_profile 中设置 JAVA_HOME 未返回正确的路径

java - Android:从 Intent 中获取 App-Name

android - 如何使用 google maps api 绘制虚线圆圈?

安卓 : Google Maps v2 in Asus Nexus 7 is not working

java - 用不同的字符分割字符串

java - 使用 Java 将 SQL 查询保存在文件中的数据源?

android - getContactsFromFirebase() 方法返回一个空列表