Översikt
På vissa Android-enheter kan en apps skärm förbli svart efter att ett systemfönster har stängts ovanpå den: en behörighetsfråga, en dialog eller tangentbordet på skärmen. Appen körs fortfarande, men inget ritas förrän nästa ändring.
KlugBlackScreen ritar om appens vy så snart ett sådant fönster stängs. Slås det på en gång vid start fungerar det automatiskt i bakgrunden. För specialfall kan det också utlösas direkt.
Funktioner
- Automatiskt läge: slå på en gång, det ritar om efter varje systemfönster
- Manuell omritning för specialfall
- En skonsam omritning utan flimmer, och en kraftfullare för envisa fall
- Gör ingenting på andra plattformar, så koden kan ligga kvar i en plattformsoberoende app
Plattformar som stöds
Kom igång
Lägg till tillägget i din applikationsbeskrivning (application descriptor):
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Kodexempel
Tre flöden. Varje anrop returnerar direkt och utför sitt arbete på Androids UI-tråd; på andra plattformar gör anropen 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-översikt
| BlackScreen.getInstance() | Returnerar den enda instansen. |
| isSupported | True på Android; false på iOS, macOS och skrivbord, där varje anrop inte gör något. |
| startAuto() | Ritar om automatiskt varje gång appfönstret får fokus tillbaka, till exempel efter att ett systemfönster stängts. Anropa en gång vid start; ett andra anrop har ingen effekt. |
| stopAuto() | Stoppar det automatiska läget. |
| fix() | Ritar om vyn en gång, utan flimmer. |
| fixHard() | Kraftfullare omritning för envisa fall, med ett kort flimmer. Det första anropet ersätter fönstrets startbakgrund med vanlig vit. |
Krav
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) eller senare |
| Behörigheter | Inga |