Activité plein écran dans Android?

Comment créer une activité en plein écran? Je veux dire sans la barre de notification. Des idées?

Vous pouvez le faire par programmation:

public class ActivityName extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // remove title requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } } 

Ou vous pouvez le faire via votre fichier AndroidManifest.xml :

  

Modifier:

Si vous utilisez AppCompatActivity, vous devez définir le thème ci-dessous

  

Il existe une technique appelée Immersive Full-Screen Mode disponible dans KitKat . Démo immersive en mode plein écran

Exemple

Si vous ne voulez pas utiliser le thème @android:style/Theme.NoTitleBar.Fullscreen parce que vous utilisez déjà un thème de votre choix, vous pouvez utiliser android:windowFullscreen .

Dans AndroidManifest.xml:

   

Dans styles.xml:

  

Dans le fichier AndroidManifest.xml :

        

Ou en code Java :

 protected void onCreate(Bundle savedInstanceState){ requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } 

Si vous utilisez AppCompat et ActionBarActivity, utilisez cette

getSupportActionBar().hide();

Attention à

 requestWindowFeature(Window.FEATURE_NO_TITLE); 

Si vous utilisez une méthode pour définir la barre d’action comme suit:

 getSupportActionBar().setHomeButtonEnabled(true); 

Cela provoquera une exception de pointeur nul.

Essayez ceci avec appcompat de style.xml . Il peut prendre en charge toutes les plates-formes.

     

L’utilisation d’Android Studio (la version actuelle est la 2.2.2 à l’instant) est très facile d’append une activité en plein écran.

Voir les étapes:

  1. Faites un clic droit sur votre package principal java> Sélectionnez «Nouveau»> Sélectionnez «Activité»> Cliquez ensuite sur «Activité en plein écran».

La première étape

  1. Personnalisez l’activité («Nom de l’activité», «Nom de la mise en page», etc.) et cliquez sur «Terminer».

Deuxième étape

Terminé!

Maintenant, vous avez une activité en plein écran faite facilement (voir la classe Java et la disposition de l’activité pour savoir comment les choses fonctionnent)!

merci pour la réponse @Cristian j’obtenais une erreur

android.util.AndroidRuntimeException: requestFeature () doit être appelé avant d’append du contenu

j’ai résolu cela en utilisant

 @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_login); ----- ----- } 

Vous devez d’abord définir le thème de votre application avec “NoActionBar” comme ci-dessous

   

Ajoutez ensuite ces lignes dans votre activité en plein écran.

 public class MainActiviy extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } } 

Il masquera la barre d’action / barre d’outils ainsi que la barre d’état dans votre activité plein écran

Pour ceux qui utilisent AppCompact … style.xml

   

Ensuite, mettez le nom dans votre manifeste ...

Je voulais utiliser mon propre thème au lieu d’utiliser @android: style / Theme.NoTitleBar.Fullscreen. Mais cela ne fonctionnait pas comme certains articles sur cette page l’avaient mentionné, alors j’ai fait quelques ajustements pour le comprendre.

Dans AndroidManifest.xml:

   

Dans styles.xml:

  

Note: dans mon cas, je devais utiliser name="windowActionBar" au lieu de name="android:windowActionBar" avant de fonctionner correctement. Donc, je viens d’utiliser les deux pour m’assurer que dans le cas où je dois porter sur une nouvelle version Android plus tard.

ASTUCE: Utiliser getWindow (). SetLayout () peut bousiller votre affichage en plein écran! Notez que la documentation de cette méthode dit:

Définissez les parameters de largeur et de hauteur de la fenêtre … vous pouvez les modifier en … une valeur absolue pour créer une fenêtre qui ne soit pas en plein écran.

http://developer.android.com/reference/android/view/Window.html#setLayout%28int,%20int%29

Pour mes besoins, j’ai trouvé que je devais utiliser setLayout avec des parameters absolus pour redimensionner correctement ma fenêtre en plein écran. La plupart du temps, cela a bien fonctionné. Il a été appelé par un événement onConfigurationChanged (). Il y avait un hoquet, cependant. Si l’utilisateur quittait l’application, changeait l’orientation et réintégrait, cela conduirait à déclencher mon code qui incluait setLayout (). Au cours de cette fenêtre de ré-entrée, ma barre d’état (qui était cachée par le manifeste) serait ré-affichée, mais à tout autre moment, setLayout () ne provoquerait pas cela! La solution consistait à append un appel setLayout () supplémentaire à celui avec les valeurs matérielles comme celles-ci:

  public static void setSize( final int width, final int height ){ //DO SOME OTHER STUFF... instance_.getWindow().setLayout( width, height ); // Prevent status bar re-appearance Handler delay = new Handler(); delay.postDelayed( new Runnable(){ public void run() { instance_.getWindow().setLayout( WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT ); }}, FILL_PARENT_ON_RESIZE_DELAY_MILLIS ); } 

La fenêtre a ensuite été correctement redimensionnée et la barre d’état n’a pas réapparu, quel que soit l’événement qui a déclenché cette opération.

montrer plein immersif:

 private void askForFullScreen() { getActivity().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); } 

sortir du mode immersif complet:

  private void moveOutOfFullScreen() { getActivity().getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } 
  @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); adjustFullScreen(newConfig); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { adjustFullScreen(getResources().getConfiguration()); } } private void adjustFullScreen(Configuration config) { final View decorView = getWindow().getDecorView(); if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { decorView.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); } else { decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); } } 

Voici un exemple de code. Vous pouvez activer / désactiver les indicateurs pour masquer / afficher des parties spécifiques.

entrer la description de l'image ici

 public static void hideSystemUI(Activity activity) { View decorView = activity.getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar | View.SYSTEM_UI_FLAG_IMMERSIVE); } 

Ensuite, vous rétablissez l’état par défaut :

entrer la description de l'image ici

 public static void showSystemUI(Activity activity) { View decorView = activity.getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } 

Vous pouvez appeler les fonctions ci-dessus depuis votre onCreate :

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.course_activity); UiUtils.hideSystemUI(this); } 
  protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_splash_screen); getSupportActionBar().hide(); } 

Après beaucoup de temps sans succès, je suis venu avec ma propre solution qui est similaire avec un autre développeur. Donc, si quelqu’un a besoin d’elle, c’est que mon problème était que la barre de navigation du système ne se cachait pas après avoir appelé. De plus, dans mon cas, j’avais besoin de paysage, donc juste au cas où cette ligne et tout ça. Tout d’abord créer du style

   

Ceci est mon fichier manifeste

         

Ceci est mon activité spalsh

 public class Splash extends Activity { /** Duration of wait **/ private final int SPLASH_DISPLAY_LENGTH = 2000; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.splash_creen); /* New Handler to start the Menu-Activity * and close this Splash-Screen after some seconds.*/ new Handler().postDelayed(new Runnable(){ @Override public void run() { /* Create an Intent that will start the Menu-Activity. */ Intent mainIntent = new Intent(Splash.this,MainActivity.class); Splash.this.startActivity(mainIntent); Splash.this.finish(); } }, SPLASH_DISPLAY_LENGTH); } 

}

Et c’est ma principale activité en plein écran. onSystemUiVisibilityChange cette méthode est importante, sinon la barre de navigation principale Android après l’appel restra et ne disparaîtra plus. Problème vraiment irritant, mais cette fonction résout ce problème.

la classe publique MainActivity étend AppCompatActivity {

 private View mContentView; @Override public void onResume(){ super.onResume(); mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fullscreen2); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.hide(); } mContentView = findViewById(R.id.fullscreen_content_text); mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); View decorView = getWindow().getDecorView(); decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { System.out.println("print"); if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } else { mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } } }); } 

}

Ceci est ma disposition de l’écran d’accueil:

     This is my fullscreen layout     

J’espère que cela t’aidera

https://developer.android.com/training/system-ui/immersive.html

Activité:

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

AndroidManifests:

   

Inside styles.xml

   

Cela a fonctionné pour moi. J’espère que ça va vous aider.

Avec kotlin, c’est comme ça que j’ai fait:

 class LoginActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_FULLSCREEN } } 

Mode immersif

Le mode immersif est destiné aux applications dans lesquelles l’utilisateur interagira fortement avec l’écran. Des exemples sont les jeux, l’affichage d’images dans une galerie ou la lecture de contenu paginé, comme un livre ou des diapositives dans une présentation. Pour cela, ajoutez simplement ces lignes:

 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 

Immersif collant

En mode immersif normal, chaque fois qu’un utilisateur glisse d’un bord, le système prend soin de révéler les barres système: votre application ne sera même pas au courant du geste. Ainsi, si l’utilisateur doit réellement glisser depuis le bord de l’écran dans le cadre de l’expérience principale de l’application, par exemple lors de la lecture d’un jeu nécessitant beaucoup de glissement ou d’une application de dessin, vous devez activer le mode immersif “collant”. .

 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 

Pour plus d’informations: Activer le mode plein écran

Dans le cas où vous utilisez le clavier, il arrive parfois que StatusBar affiche lorsque le clavier apparaît. Dans ce cas, j’ajoute généralement ceci à mon style xml

styles.xml

  

Et aussi cette ligne à mon manifeste

  

AndroidManifest.xml

   

I. Le thème de votre application principale est Theme.AppCompat.Light.DarkActionBar

Pour masquer ActionBar / StatusBar
style.xml

   

Pour masquer la barre de navigation du système

 public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); setContentView(R.layout.activity_main) ... } } 

II. Le thème de votre application principale est Theme.AppCompat.Light.NoActionBar

Pour masquer ActionBar / StatusBar
style.xml

   

Pour masquer la barre de navigation du système

Similaire comme Theme.AppCompat.Light.DarkActionBar .

Démo
J’espère que ça aide

Il suffit de coller ce code dans la méthode onCreate()

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

Cela a fonctionné pour moi.

 if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); } 
 getWindow().addFlags(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);