简体   繁体   中英

Using full screen Activity

I am making a simple game and so far I've been using the Blank Activity. Now I want it to cover the entire screen, Will I need to Recode the entire thing using a FullScreen Activity? I've tried looking for something online but every thing i came across had adding this bit:​

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

Which causes the app to crash as soon as it is launched on a device. SO please if anyone can show me my error.

Here is a link to the logcat output as well as the game code

Logcat and game code

Try this to set activity to fullscreen:

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);

You can put this code in onCreate() method

You can try following code.

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>

None of the answers above works correctly; they have problems with the onResume() method, and end up showing the soft keys.

The correct way to do it is pretty straightforward. Override this method in the Activity that should be fullscreen:

@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);
    }
}

That's if you want "Sticky Immersion". Check out the full doc here , and decide what is better for your use case.

What you wanted is called Imersive mode, which works on Android 4.4 and Above

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);

Official Documentation can be found here

In AndroidManifest.xml file

<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>

and your class should extends Activity not AppCompatActivity...

你可以简单地转到你的清单文件,并根据你的要求将android:theme="@android:style/Theme.NoTitleBar.Fullscreen"添加到你的Manifest文件中的<activity /><application />标签。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM