j'ai deux questions:
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:
après mes recherches et vos réponses, je reçois ceci:
mais mon application devrait ressembler à ceci sans barre de navigation:
je ne veux pas que la barre de navigation du système soit visible dans mon application.
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)
-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:
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);
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)
{
}
}
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.
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);
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 !