Saturday, January 28, 2017

Full screen app on immersive mode

Leave a Comment

After the use of immersive mode , the navigation bar hides but app doesn't go 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 the following.

5 Answers

Answers 1

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

Answers 2

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.

Answers 3

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

This works for me.

Answers 4

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.

Answers 5

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.

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment