9
votes

Y a-t-il un moyen de vérifier la visibilité de la barre d'état?

J'ai un service qui devrait vérifier périodiquement la visibilité de la barre d'état, lorsque une activité supérieure est (ou non) en mode plein écran. Est-ce possible?


0 commentaires

4 Réponses :


0
votes

Pas vraiment. S'il est votre activité au premier plan, votre activité pourrait indiquer le service s'il utilise un thème qui masque la barre d'état. Vous n'avez aucun moyen de déterminer cela indépendamment du service, sans parler des activités tierces plutôt que de votre propre.


3 commentaires

J'ai découvert la méthode GetSystemuivisabilité (). La documentation dit que c'est ce dont j'ai besoin. Mais semble qu'il ne fonctionne pas. Résultat de retour toujours 0 :(


Les auditeurs Systemui fonctionnent simplement bien, mais ils vous disent que sur la nid d'abeille et ci-dessus lorsque les boutons logiciels se cachent (en nid d'abeille, cela n'est jamais).


@Deviant dans mon expérimentation avec GetSystemuivisibilité Il ne rapporte pas la visibilité Systemui Si une application est devenue plein écran, uniquement si une autre application a utilisé les drapeaux SetSystemuivisibilité disponibles dans API11 + (expérimentez-vous encore). Avez-vous trouvé le contraire?



13
votes

Enfin, j'ai découvert comment vérifier si la barre d'état est visible ou non. C'est une sorte de hack, mais ça marche pour moi. J'ai créé cette méthode dans mon service: xxx

où les largeurs et les hauteurs de notre taille d'écran mondiale; Ici, j'ai juste comparé la hauteur de la fenêtre d'assistant invisible à la hauteur de l'écran et prendre la décision si la barre d'état est visible. Et n'oubliez pas de supprimer Helperwnd à OnDestroy de votre service.


2 commentaires

Je suis proposé une méthode similaire à toi seule, sauf absolument onsizechanged ... Dans mes tests, j'ai trouvé nos méthodes ne fonctionnent pas sur tous les appareils. Cela fonctionne bien sur toutes les API10 + AVDS et Moto Atrix2, mais ne fonctionne pas sur Kindle Fire Api10 & SGS2 API15. Sur ces périphériques, les superpositions ne redimensionnent pas automatiquement lorsqu'une autre application va à l'écran complet, les superpositions ne peuvent pas être dessinées sur la barre d'état sans le flag_layout_in_screen. Avez-vous rencontré cela et / ou trouvé une solution meilleure / alternative? Tia!


@Deviant, comment vous obtenez des "hauteurs" sur la tablette? S'il vous plaît donner ce code



2
votes
public boolean isStatusBarVisible() {
    Rect rectangle = new Rect();
    Window window = getActivity().getWindow();
    window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
    int statusBarHeight = rectangle.top;
    return statusBarHeight != 0;
}

0 commentaires

3
votes

Bonjour et si vous essayez ce code qui fournit Android comme bonne pratique xxx

i laissez le lien de la documentation: https://developer.android.com/training/system-ui/visbiliy#java


0 commentaires