web-dev-qa-db-fra.com

Utilisation de l'activité en plein écran

Je fais un jeu simple et jusqu'à présent, j'utilise l'activité vide. Maintenant, je veux qu'il couvre tout l'écran. Dois-je tout recoder à l'aide d'une activité plein écran? J'ai essayé de chercher quelque chose en ligne, mais tout ce que j'ai trouvé a ajouté ce bit:

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

Ce qui provoque le blocage de l'application dès son lancement sur un appareil. SO s'il vous plaît si quelqu'un peut me montrer mon erreur.

Voici un lien vers la sortie logcat ainsi que le code du jeu

Logcat et code du jeu

12
Nabeel abbas

Essayez ceci pour définir l'activité en plein écran:

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

Vous pouvez mettre ce code dans la méthode onCreate()

30
Michele Lacorte

Vous pouvez essayer de suivre le code.

style.xml:

<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowContentOverlay">@null</item>
</style>

AndroidManifest.xml:

<activity
    Android:name=".FullScreenActivity"
    Android:theme="@style/AppTheme.NoTitle"
    Android:screenOrientation="portrait"
    Android:launchMode="singleTop">
</activity>
25
t-kashima

Aucune des réponses ci-dessus ne fonctionne correctement. ils ont des problèmes avec la méthode onResume() et finissent par afficher les touches programmables.

La façon correcte de le faire est assez simple. Remplacez cette méthode dans la Activity qui devrait être en plein écran:

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

C'est si vous voulez "Sticky Immersion". Consultez le document complet ici et déterminez ce qui convient le mieux à votre cas d'utilisation.

4
RominaV

Dans AndroidManifest.xml fichier

<activity
       Android:name=".Launch"
       Android:label="@string/app_name"
       Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->

<intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>

et votre classe devrait étendre Activity not AppCompatActivity ...

2
KAMAL VERMA

Ce que tu voulais s'appelle le mode Immersive, qui fonctionne sur Android 4.4 et supérieur

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

La documentation officielle peut être trouvée ici

2

Vous pouvez simplement aller dans votre fichier manifeste et ajouter Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" à votre balise <activity /> ou <application /> dans votre fichier manifeste en fonction de vos besoins.

0
tk1505