使用全屏 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 输出以及游戏代码
尝试将 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,然后决定什么更适合您的用例。
我正在制作一个简单的游戏,到目前为止我一直在使用 Blank Activity。现在我希望它覆盖整个屏幕,我是否需要使用全屏 Activity 重新编码整个内容?我试过在网上找东西,但我遇到的每件事都添加了这个位:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
这会导致应用程序在设备上启动后立即崩溃。如果有人能告诉我我的错误,请告诉我。
这里是 link 到 logcat 输出以及游戏代码
尝试将 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,然后决定什么更适合您的用例。