我想要做的:在启动应用程序的一两秒内隐藏应用程序的 ActionBar(和标题栏)。
欧雅安卓设备自定义了 ActionBar 主题,以尽量减少过扫描问题。(与 Google TV 不同,ouya 设备没有过扫描校准程序,因此 Ouya 开发人员在股票 ActionBar 兼容主题中的元素周围添加了大量填充)。这对于暗全息和对话主题似乎很有效。不幸的是,默认的光全息主题动作条在欧雅设备上看起来很糟糕。
这让我在启动动画中感到非常悲痛,因为我正在将现有的 Android 应用程序移植到 Ouya。
因为我需要做一些定制来适应欧亚的游戏控制器,所以当我检测到我在欧亚上运行时,我想我不会使用操作栏。因此,我调用 getActionBar().hide(),然后加载仅适用于 Ouya 设备的具有额外功能的 Ouya 特定布局。
问题:在应用程序启动期间,Android 在加载应用程序时显示一个空的操作栏(只有应用程序图标和应用程序标题),并且使用从清单文件中读取的 Activity 的默认主题来执行此操作。延迟相当显着——大约两秒左右,因此应用程序图标的闪烁和损坏的 ActionBar 非常明显。所有这些都发生在我的应用程序中执行第一行代码之前。如果我在我的主要活动的构造函数上设置了一个断点,那么在断点被击中之前,损坏的标题屏幕会显示整整两秒钟。
添加
<item name="android:windowNoActionBar">true</item>
似乎没有任何效果。Android 可能会显示标题栏而不是虚拟操作栏。添加
<item name="android:windowNoTitle">true</item>
应用程序主题确实隐藏了虚拟操作栏,但会导致 ActionBarCompat 库代码中出现一系列痛苦的长期崩溃。
有没有一种干净的方法来控制启动期间显示的内容,而不会破坏 ActionBarCompat 代码?
<item name="android:windowDisablePreview">true</item>
似乎是一种解决方法,尽管它有点令人不安,因为现在发射只是延迟了两秒钟。:-/
补充要求:我真的很想为 Ouya 和常规 Android 设备提供一个二进制文件,因此如果它们不能在所有平台上合理地工作,那么清单和样式更改是不可取的。