Resumen
En algunos dispositivos Android la pantalla de una app puede quedarse en negro después de que se cierre sobre ella una ventana del sistema: una solicitud de permisos, un diálogo o el teclado en pantalla. La app sigue ejecutándose, pero no se dibuja nada hasta el siguiente cambio.
KlugBlackScreen vuelve a dibujar la vista de la app en cuanto se cierra una ventana así. Se activa una sola vez al inicio y funciona automáticamente en segundo plano. Para casos especiales también puede activarse directamente.
Funciones
- Modo automático: se activa una vez y redibuja tras cada ventana del sistema
- Redibujado manual para casos especiales
- Un redibujado suave sin parpadeo y otro más fuerte para casos tercos
- No hace nada en otras plataformas, por lo que el código puede permanecer en una app multiplataforma
Plataformas compatibles
Primeros pasos
Añade la extensión al descriptor de tu aplicación:
<extensions>
<extensionID>com.klug.blackscreen</extensionID>
</extensions>
Ejemplos de código
Tres flujos. Cada llamada devuelve de inmediato y hace su trabajo en el hilo de UI de Android; en otras plataformas las llamadas no hacen nada.
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
Resumen de la API
| BlackScreen.getInstance() | Devuelve la instancia única. |
| isSupported | Verdadero en Android; falso en iOS, macOS y escritorio, donde cada llamada no hace nada. |
| startAuto() | Redibuja automáticamente cada vez que la ventana de la app recupera el foco, por ejemplo después de que se cierre una ventana del sistema. Llámalo una vez al inicio; una segunda llamada no tiene efecto. |
| stopAuto() | Detiene el modo automático. |
| fix() | Redibuja la vista una vez, sin parpadeo. |
| fixHard() | Redibujado más fuerte para casos tercos, con un breve parpadeo. La primera llamada sustituye el fondo de lanzamiento de la ventana por blanco liso. |
Requisitos
| AIR SDK | 51.x (HARMAN) |
| Android | Android 6.0 (API 23) o posterior |
| Permisos | Ninguno |