使用全屏 Activity

Using full screen Activity

我正在制作一个简单的游戏,到目前为止我一直在使用 Blank Activity。现在我希望它覆盖整个屏幕,我是否需要使用全屏 Activity 重新编码整个内容?我试过在网上找东西,但我遇到的每件事都添加了这个位:

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

这会导致应用程序在设备上启动后立即崩溃。如果有人能告诉我我的错误,请告诉我。

这里是 link 到 logcat 输出以及游戏代码

Logcat and game code

尝试将 activity 设置为全屏:

getWindow().getDecorView().setSystemUiVisibility(
  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);

您可以将此代码放在 onCreate() 方法中

您只需转到您的清单文件并将 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 添加到您的 <activity /><application /> 标签,具体取决于您的要求。

您可以试试下面的代码。

style.xml:

<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

AndroidManifest.xml:

<activity
    android:name=".FullScreenActivity"
    android:theme="@style/AppTheme.NoTitle"
    android:screenOrientation="portrait"
    android:launchMode="singleTop">
</activity>

您想要的是所谓的沉浸式模式,适用于 Android 4.4 及更高版本

getWindow().getDecorView().setSystemUiVisibility(
  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);

可以找到官方文档here

AndroidManifest.xml文件中

<activity
       android:name=".Launch"
       android:label="@string/app_name"
       android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

并且您的 class 应该扩展 Activity 而不是 AppCompatActivity...

None 以上答案正确;他们在使用 onResume() 方法时遇到问题,最终显示软键。

正确的做法非常简单。在应该全屏的 Activity 中覆盖此方法:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
                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);
    }
}

这就是你想要的 "Sticky Immersion"。查看完整的文档 here,然后决定什么更适合您的用例。