web-dev-qa-db-fra.com

application plein écran android

j'ai deux questions:

  1. un comment puis-je exécuter mon application en plein écran
  2. comment les lecteurs vidéo exécutent des vidéos en plein écran.

j'ai beaucoup essayé et j'ai toujours du mal à atteindre cet objectif, mais je n'ai pas trouvé de solution.

la liste des solutions que j'ai trouvées mais elles ne répondent pas à mes exigences

  • cela ne cache que la barre de notification.

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    

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

  • cache également que la barre de notification

    Android:label="@string/app_name"
    Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
    
  • il profile la barre de navigation en ne la cachant pas.

    getWindow (). getDecorView (). setSystemUiVisibility (View.SYSTEM_UI_FLAG_LOW_PROFILE);

  • aucun effet sur mon activité.

    anyView.setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

notez que:

  • je ne parle pas d’enracinement d’un appareil, veuillez donc fournir les solutions qui peuvent fonctionner sans l’enracinement d’un appareil.
  • je ne parle pas de masquer uniquement la barre de notification, mais en plein écran en masquant à la fois la barre de navigation et la barre de notification.
  • je parle de jelly beans api 4.1 ou supérieure à la version 4.1 d'Android
  • et s'il vous plaît donner des réponses avec le code.

après mes recherches et vos réponses, je reçois ceci:

enter image description here

mais mon application devrait ressembler à ceci sans barre de navigation:

enter image description here

je ne veux pas que la barre de navigation du système soit visible dans mon application.

13
Hamad

Je ne sais pas trop ce que vous cherchez, mais ce qui suit masque la barre de notification et les touches de navigation programmables (telles qu'elles apparaissent sur les appareils Google Nexus). L'application est donc en plein écran.

Edit2

Dans Android 4.4 (API 19), Google a introduit le nouveau mode Immersive qui peut masquer l’état et la barre de navigation et permettre une interface utilisateur réellement en plein écran.

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    mDecorView.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);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
               View.SYSTEM_UI_FLAG_LAYOUT_STABLE
             | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
             | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

Référence:
https://developer.Android.com/training/system-ui/immersive.html

Modifier:
Testé sur Android 4.3 (API 18) et Android 4.1 (API 16) avec les touches de navigation douce.

@Override
protected void onCreate(Bundle b) {
    super.onCreate(b);

    setContentView(R.layout.main);

    int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
}

Pour plus d'informations, consultez http://developer.Android.com/reference/Android/view/View.html#setSystemUiVisibility(int)

29
kaderud

-Pour masquer la barre d'état:

Une excellente solution que j'ai trouvée pour ce problème, attribuant à chaque activité theme & windowSoftInputMode les valeurs suivantes:

<activity   Android:name=".MyActivity"
            Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" 
            Android:windowSoftInputMode="adjustResize">  <!-- theme : to set the activity to a full screen mode without a status bar(like in some games) -->
</activity>                                              <!-- windowSoftInputMode : to resize the activity so that it fits the condition of displaying a softkeyboard -->

pour plus d'informations référez-vous ici .

-Pour masquer la barre de notification:

Il y a Deux façons:

1- rootez votre périphérique, ouvrez-le dans adb window command, puis exécutez les opérations suivantes:

 adb Shell >
 su >
 pm disable com.Android.systemui >

et pour le récupérer, faites de même, mais changez disable en enable.

2- ajoute la ligne suivante à la fin du fichier build.prop de votre périphérique:

qemu.hw.mainkeys = 1

puis pour le récupérer, retirez-le.

et si vous ne savez pas comment éditer le fichier build.prop:

  • télécharger EsExplorer sur votre appareil et recherchez build.prop puis modifiez ses autorisations de lecture et d’écriture, puis ajoutez la ligne.
  • téléchargez une application d'édition build.prop spécialisée telle que build.propEditor .
  • ou se référer à ce lien .
2
Muhammed Refaat

Sur le nouvel Android 4.4, vous devriez ajouter cette ligne:

View.SYSTEM_UI_FLAG_IMMERSIVE;

La nouvelle solution de travail atleast sur Nexus4 4.4.2 est donc

final int mUIFlag = 
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
              | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
              | View.SYSTEM_UI_FLAG_LOW_PROFILE
              | View.SYSTEM_UI_FLAG_FULLSCREEN
              | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_IMMERSIVE;

Immersive seul ne fonctionnera pas bien que cela fonctionne lorsqu'il est combiné avec d'autres drapeaux. voir la documentation pour plus de détails. Ensuite, vous ajoutez à l'activité l'activation de cette configuration comme indiqué ci-dessus (j'ajoute juste pour la cohérence)

getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
1
sivi

Je pense que vous ne pouvez pas masquer la barre système sous Android 4.0> (uniquement sur les tablettes, vous devriez pouvoir le faire dans les téléphones)

Ce que vous pouvez faire est de masquer les icônes et de désactiver certains boutons (tout le monde sauf la maison)

Vous pouvez essayer ceci:

        if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);              

        }

Aussi pour désactiver les boutons:

Ceci est pour le bouton de retour:

  public boolean onKeyDown(int keyCode, KeyEvent event) {
    return false;
  }

Ceci pour le menu:

@Override
public void onWindowFocusChanged(boolean hasFocus) {

        try
        {
           if(!hasFocus)
           {
                Object service  = getSystemService("statusbar");
                Class<?> statusbarManager = Class.forName("Android.app.StatusBarManager");
                Method collapse = statusbarManager.getMethod("collapse");
                collapse .setAccessible(true);
                collapse .invoke(service);
           }
        }
        catch(Exception ex)
        {
        }

}
0
leojg

Version Android: 4.2.2 - Appareil: Tablette Vega

Application Android pour masquer l'état et la barre système et afficher l'écran complet J'ai suivi ces étapes.

AndroidManifest.xml

   <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name">
        <activity
            Android:name=".MainActivity"
            Android:label="@string/app_name"
            Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

MainActivity.Java

super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(0x10);
setContentView(R.layout.activity_main);

Le code ci-dessus a parfaitement fonctionné pour mon application.

0
Vijaysachin

J'ai fait 2 mises en page, une pour la taille normale et une pour le plein écran et à l'intérieur du plein écran, j'ai la taille des périphériques et je l'ai assignée au lecteur vidéo.

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int w=size.x;
int h=size.y;
videoPlayer.setFixedSize(w, h);
0
Omid Aminiva

Les lecteurs vidéo fonctionnent en plein écran en réglant la

myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

setFlags() avant setContentView(View)

Cela affichera la barre système lors de toute interaction utilisateur, comme le font les lecteurs vidéo.

Le plus proche de l’exécution de votre application en plein écran est de le configurer en mode Lights Out, les boutons du système apparaîtront sous la forme de points .

Pour utiliser le mode d’éclairage, utilisez n’importe quelle vue de votre activité et appelez

anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Pour Masquer la barre de navigation, utilisez ceci dans votre onStart() pour que chaque fois que vous accédez à cette activité, elle passe en mode plein écran .

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

J'espère que ça aide !

0
jbmeta