Oversikt
På enkelte Android-enheter kan skjermen til en app forbli svart etter at et systemvindu har lukket seg oppå den: en tillatelsesforespørsel, en dialog eller skjermtastaturet. Appen kjører fortsatt, men ingenting tegnes før neste endring.
KlugBlackScreen tegner appens visning på nytt så snart et slikt vindu lukkes. Slått på én gang ved start fungerer den automatisk i bakgrunnen. For spesialtilfeller kan den også utløses direkte.
Funksjoner
- Automatisk modus: slå på én gang, den tegner på nytt etter hvert systemvindu
- Manuell ny tegning for spesialtilfeller
- En mild ny tegning uten flimmer, og en kraftigere for hardnakkede tilfeller
- Gjør ingenting på andre plattformer, slik at koden kan bli værende i en plattformuavhengig app
Støttede plattformer
Kom i gang
Legg utvidelsen til i applikasjonsbeskrivelsen din:
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Kodeeksempler
Tre flyter. Hvert kall returnerer med en gang og gjør jobben på Android UI-tråden; på andre plattformer gjør kallene ingenting.
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
API-oversikt
| BlackScreen.getInstance() | Returnerer den ene instansen. |
| isSupported | True på Android; false på iOS, macOS og skrivebord, der alle kall ikke gjør noe. |
| startAuto() | Tegner automatisk på nytt hver gang appvinduet får fokus tilbake, for eksempel etter at et systemvindu lukkes. Kall én gang ved start; et andre kall har ingen effekt. |
| stopAuto() | Stopper den automatiske modusen. |
| fix() | Tegner visningen på nytt én gang, uten flimmer. |
| fixHard() | Kraftigere ny tegning for hardnakkede tilfeller, med et kort flimmer. Det første kallet erstatter vinduets oppstartsbakgrunn med ren hvit. |
Krav
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) eller nyere |
| Tillatelser | Ingen |