Désactiver le panneau de notification
Je suis en train de travailler sur un lockscreen application et j'ai besoin de désactiver la capacité de tirer vers le bas l'avis/la barre d'état en haut de l'écran. Il y a une application appelée Holo Locker et ce que cette app n'est lorsque l'utilisateur tire vers le bas à partir du haut de l'écran, c'est juste qu'il met la barre arrière vers le haut de l'écran et en le rendant impossible à tirer le tiroir vers le bas.
Je n'ai aucune idée par où commencer. Toute aide serait super!
Merci!
source d'informationauteur DDukesterman
Vous devez vous connecter pour publier un commentaire.
C'est possible grâce à la réflexion. Il y a beaucoup de problèmes, bien.
Il n'y a aucun moyen de vérifier si le panneau de notification est ouvert, ou de l'ouverture. Donc, on va devoir compter sur
Activity#onWindowFocusChanged(boolean)
. Et c'est là que les problèmes commencent.Ce que la méthode n':
Donc, nous allons devoir trouver un moyen de distinguer entre les focus-la perte due à l'affichage du panneau de notification, et la perte que d'autres événements.
Certains événements qui déclencheront
onWindowFocusChanged(boolean)
:Fenêtre focus est perdu lorsqu'une activité est envoyé à l'arrière-plan (changement d'utilisateur des applications, ou en appuyant sur la
home
bouton)Depuis les boîtes de dialogue et PopupWindows dans leur propre windows, la fenêtre sera perdu lorsque celles-ci sont affichées.
Une autre instance dans laquelle l'activité de la fenêtre de perdre le focus, c'est quand un spinner est cliqué, l'affichage d'un PopupWindow.
Votre activité peut ne pas avoir à faire face à tous ces problèmes. L'exemple suivant traite une partie d'entre eux:
Tout d'abord, vous avez besoin de la
EXPAND_STATUS_BAR
autorisation:Prochaine, déclarer ces portée de la classe de la variable dans votre activité:
Remplacer
onWindowFocusChanged(boolean)
:Définir
collapseNow()
:Poignée de l'activité
onPause()
etonResume()
:Espère que c'est proche de ce que vous cherchez.
Remarque: Le scintillement qui se passe lorsque vous faites glisser la barre de notification et de la retenir, il est malheureusement inévitable. Son aspect peut cependant être contrôlée ou améliorés à l'aide de "mieux" valeurs de gestionnaire-des retards. Ce problème est également présent dans le Holo Locker app.
Si vous voulez juste pour empêcher l'utilisateur de l'ouverture de l'état, essayez ceci :
Utilisation :
Ajouter avant
En fonction de vos besoins, vous pouvez choisir une WindowManager.LayoutParams.
Espère que cette aide.
J'ai essayé la accepté de répondre, mais j'étais encore capable de tirer vers le bas et de modifier certains paramètres.
Il est une autre solution qui évite à l'utilisateur de tirer dans le menu en bas complètement, j'ai préféré la accepté de répondre ici.
Aller avec cela, et renvoyer le lien
pour la Classe customViewGroup
Qui sonne comme un absolument excellente idée. Vous serait rompre l'OS par défaut, les fonctionnalités que l'utilisateur s'attend à être là. Heureusement, je ne pense pas que c'est possible, mais vous réaliser quelque chose de similaire makin votre activité en plein écran.
Ne laissez-moi savoir si vous trouvez une meilleure solution que celle-ci, je vais être impatient de savoir qu'.
Merci.