12

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

Fabian N.
  • 3,807
  • 2
  • 23
  • 46
nabeel
  • 425
  • 1
  • 9
  • 22

6 Answers6

30

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

Michele Lacorte
  • 5,323
  • 7
  • 32
  • 54
  • Essentially This wasn't first working as I had the target SDK set all the way back to Froyo. Once I changed that to KitKat, This worked like a charm – nabeel Oct 17 '15 at 07:25
  • @Michele Lacorte I am experiencing a white coloured bar when my navigation drawer goes off in android L? – Ishant Sagar Oct 10 '16 at 09:55
  • 1
    I think @t-kashima xml solution below in the answers is quite nice. Check it out. No need to duplicate this accepted answers' code everywhere if you have a style that defines fullscreen. – Arnold Balliu Feb 16 '17 at 02:14
  • Tried this. The activity only looks fullscreen after `onCreate`, but the status bar appears when the activity is resumed. XML solution works better. – RominaV Mar 24 '17 at 13:51
26

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>
t-kashima
  • 271
  • 3
  • 7
4

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.

RominaV
  • 3,335
  • 1
  • 29
  • 59
  • 1
    Thank you! This should be the accepted answer. I had this in `onResume()` as so many stack overflow answers suggest, and it worked 99% of the time, making it hard to debug. You saved me having to run this code every few seconds as a workaround. – a_cardboard_box Feb 22 '18 at 16:58
  • @user1516661 I was confused at first with everyone saying to put it on the `onResume()` method too :) – RominaV Feb 25 '18 at 18:42
2

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

Amalan Dhananjayan
  • 2,277
  • 1
  • 34
  • 47
2

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

KAMAL VERMA
  • 675
  • 7
  • 10
0

You can simply go to your manifest file and add android:theme="@android:style/Theme.NoTitleBar.Fullscreen" to your <activity /> or <application /> tag in your Manifest file depending upon your requirement.

tk1505
  • 312
  • 1
  • 9