Saeed Hashemi
Saeed Hashemi

Reputation: 1024

Full screen app on immersive mode

After the use of immersive mode, the navigation bar hides but app doesn't go to full screen.

What am i doing wrong?

Below is my given code :

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

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

enter image description here

Any help is valuable? Please help me with your answers.

Upvotes: 2

Views: 957

Answers (5)

Anurag Singh
Anurag Singh

Reputation: 6200

This is the code that I am using in one of my production application which also takes care of android api versions ImmersiveModeFragment.java. It also takes care when you leave your app and resume it again. You can download the sample and try with all the features that an immersive app should have.

Upvotes: 2

Akhilesh Awasthi
Akhilesh Awasthi

Reputation: 2708

   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

This works for me.

Upvotes: 2

Rosário P. Fernandes
Rosário P. Fernandes

Reputation: 11326

Here is the code that I have been using on my Immersive Android App:

private void hideSystemUI()
{
    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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if(hasFocus)
        hideSystemUI();
}

Also call the hideSystemUI() right after the setContentView() method. And on your AndroidManifest.xml file, add the attribute android:immersive="true" to your Activity tag.

Upvotes: 1

mmmatey
mmmatey

Reputation: 684

You can also use this: (FLAG_LAYOUT_NO_LIMITS)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
                WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

Upvotes: 4

Amit Upadhyay
Amit Upadhyay

Reputation: 7401

To make your activity full screen use the following code:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

use this inside onCreate().

Example:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.example);
    }

UPDATE

You can also use this code snippet to acheive what you want.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window window = getWindow();
    // Translucent status bar
    window.setFlags(
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    // Translucent navigation bar
    window.setFlags(
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}

NOTE: the above code snippet doesn't need to be written above the setContentView(R.layout.la); or super.onCreate(savedInstanceState);. This will display the other info (like time, battery, etc) on top but with your apps layout background.

Upvotes: 2

Related Questions