2011-10-06 7 views
5

Passer de l'affichage en mode plein écran à l'affichage en mode plein écran avec Android fonctionne correctement. Cependant, au retour de mon activité en plein écran (un lecteur vidéo plein écran), l'activité apparaît en glissant vers le bas lorsque la barre d'état s'anime. Il semble que l'activité de reprise est animée depuis le mode plein écran mais avec la barre d'état non là, l'activité réelle est en train d'être peinte comme si elle était manquante.Passer du plein écran au mode plein écran pop/slide

J'ai essayé de jouer avec mon fichier manifeste en spécifiant des thèmes/styles. Je l'ai essayé de faire ce programme dans onCreate() avant l'affichage du contenu est défini et divers autres endroits dans le cycle de vie d'activité:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Il semble qu'il n'y a pas moyen de garder la barre d'état de l'animation vers le bas et/ou à partir de la vue de contenu du premier dessin sans la barre d'état, puis en l'ajustant vers le bas lors de la ré-affichage.

Quelqu'un a des commentaires à ce sujet? Je ne suis pas sûr s'il y a un moyen de changer cela et est juste un comportement d'Android.

Merci d'avance.

Répondre

1

Dans la vue racine de la mise en page d'activité ajouter

android: paddingTop = "25dp"

Dans le onCreate de l'activité, avant la setContentView() ajouter

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
2
private void toggleFullscreen(boolean fullscreen) 
{ 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) 
    { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    else 
    { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    getWindow().setAttributes(attrs); 
} 

Utilisez ceci cela fonctionnera sûrement

0

J'ai été capable d'y parvenir en deux étapes.

  1. Utilisez Theme.AppCompat.Light.NoActionBar dans mes styles pour l'activité que je veux montrer que plein écran. .

  2. Utiliser le code ci-dessous dans onCreate(Bundle savedInstanceState) de l'activité méthode WindowManager.LayoutParams attributs = getWindow() getAttributes(); attributs.flags | = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; getWindow(). SetAttributes (attributs);

Espérons que cela aide. Bonne programmation :)

1

Après ma solution:

Afficher la barre d'état du système terminer avant l'activité en plein écran

@Override 
public void onBackPressed() { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

    mUIHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      MyFullScreenActivity.super.onBackPressed(); 
     } 
    }); 
} 
+0

cette solution m'a été plus utile car elle n'a pas obligé l'activité d'origine à ajuster son remplissage. –

0

Je ne sais pas si cela fonctionnera pour vous, mais il a travaillé pour moi. Régler l'activité plein écran:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
setContentView(R.layout.my_screen); 

désactiver plein écran:

WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
getWindow().setAttributes(attrs); 
startActivity(new Intent(getBaseContext(),NewActivity.class)); 
finish(); 
1

Voici la meilleure façon d'éliminer ce problème:

private void setFullscreen(boolean fullscreen) { 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    else { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
    } 
    getWindow().setAttributes(attrs); 
} 

Appelez ce avant super.onCreate(...) dans votre activité.