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
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()
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>
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.
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 ...
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
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.