Vue d’ensemble
Sur certains appareils Android, l’écran d’une application peut rester noir après la fermeture d’une fenêtre système placée par-dessus : une demande d’autorisation, une boîte de dialogue ou le clavier à l’écran. L’application tourne toujours, mais rien n’est dessiné avant le prochain changement.
KlugBlackScreen redessine la vue de l’application dès qu’une telle fenêtre se ferme. Activé une fois au démarrage, il fonctionne automatiquement en arrière-plan. Pour les cas particuliers, il peut aussi être déclenché directement.
Fonctionnalités
- Mode automatique : à activer une fois, il redessine après chaque fenêtre système
- Redessin manuel pour les cas particuliers
- Un redessin doux sans scintillement, et un plus fort pour les cas tenaces
- Sans effet sur les autres plateformes : le code peut donc rester dans une application multiplateforme
Plateformes prises en charge
Prise en main
Ajoutez l’extension au descripteur de votre application :
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Exemples de code
Trois flux. Chaque appel retourne immédiatement et effectue son travail sur le thread d’interface Android ; sur les autres plateformes, les appels ne font rien.
import com.klug.blackscreen.BlackScreen; // once, in the constructor of your main class: from now on the view is redrawn // whenever the app window gets the focus back, after a permission prompt, // a dialog, the keyboard or another activity BlackScreen.getInstance().startAuto(); // a second call has no effect // iOS, macOS and desktop: isSupported is false and every call does nothing, // so no platform check is needed. stopAuto() switches it off again (rarely needed).
// call this from the result handler of any system window that covered the app: // a permission prompt, a share sheet, a native dialog, a sign-in page function onSystemWindowClosed():void { BlackScreen.getInstance().fix(); // redraw once, no flicker } // example: your own permission flow reports back myPermissionFlow.onResult = function( granted:Boolean ):void { onSystemWindowClosed(); if ( granted ) startCamera(); else showPermissionHint(); };
import flash.desktop.NativeApplication; import flash.events.Event; // back from another activity (share sheet, browser, system settings) and fix() // is not enough on a given runtime build: the stronger redraw may flicker once NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE, function( e:Event ):void { BlackScreen.getInstance().fixHard(); }); // the first fixHard() replaces the launch background of the window with plain white, // so the short toggle does not show the splash image
Aperçu de l’API
| BlackScreen.getInstance() | Renvoie l’instance unique. |
| isSupported | Vrai sur Android ; faux sur iOS, macOS et ordinateur, où chaque appel ne fait rien. |
| startAuto() | Redessine automatiquement chaque fois que la fenêtre de l’application retrouve le focus, par exemple après la fermeture d’une fenêtre système. À appeler une fois au démarrage ; un second appel est sans effet. |
| stopAuto() | Arrête le mode automatique. |
| fix() | Redessine la vue une fois, sans scintillement. |
| fixHard() | Redessin plus fort pour les cas tenaces, avec un bref scintillement. Le premier appel remplace l’arrière-plan de lancement de la fenêtre par du blanc uni. |
Prérequis
| SDK AIR | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) ou version ultérieure |
| Autorisations | Aucune |