¿Qué es un "panel" en una ventana de Android?
La documentación de referencia para la ventana de Android y páginas relacionadas (por ejemplo, WindowManager.LayoutParams y Window.Callback) hace referencia a "Paneles" en varios lugares. Por ejemplo, la página Window.Callback tiene lo siguiente.
Window.Callback API de una ventana de nuevo a su llamador. Esto permite al cliente interceptar el envío de claves, paneles y menús, etc.
y
Public abstract Ver onCreatePanelView (int featureId)
Añadido en API nivel 1
Instancia la vista para mostrar en el panel para 'featureId'. Puede devolver null, en cuyo caso el contenido predeterminado (normalmente un menú) se creará para usted.
Parámetros featureId: qué panel se está creando.
Vista de devoluciones: La vista de nivel superior para colocar en el panel.
WindowManager.LayoutParams parece ver paneles como Windows "tipos", por ejemplo:
TYPE_APPLICATION_PANEL Tipo de ventana: un panel en la parte superior de una ventana de la aplicación. TYPE_APPLICATION_SUB_PANEL Tipo de ventana: un sub-panel en la parte superior de una ventana de la aplicación. TYPE_STATUS_BAR_PANEL Tipo de ventana: panel que se desliza sobre la barra de estado En sistemas multiusuario se muestra en las ventanas de todos los usuarios. TYPE_SYSTEM_DIALOG Tipo de ventana: panel que se desliza desde la barra de estado En sistemas multiusuario se muestra en todas las ventanas de los usuarios.
También revisé el código fuente, pero no pude hacer ningún progreso significativo sin pasar horas en el proceso.
¿Qué es un Panel de Windows, tal como se utiliza en la documentación de referencia?
En una nota relacionada, ¿cuál es el featureId? En onCreatePanelView (int featureId) , arriba, parece ser un ID utilizado para especificar el panel, pero en otros contextos parece que se utiliza para identificar un conjunto de características de Windows, por ejemplo, para Window.requestFeature ():
Public boolean requestFeature (int featureId)
Añadido en API nivel 1
Habilitar funciones de pantalla extendida. Esto debe llamarse antes de setContentView (). Se puede llamar tantas veces como se desee, siempre y cuando sea antes de setContentView (). Si no se llama, no habrá funciones extendidas. No se puede desactivar una función una vez que se solicita. No puede utilizar otras funciones de título con FEATURE_CUSTOM_TITLE.
Parámetros featureId: Las características deseadas, definidas como constantes por Window.
Devuelve: las características que se establecen ahora.
Gracias, Barry
- Android 1.6: "android.view.WindowManager $ BadTokenException: No se puede agregar ventana-token null no es para una aplicación"
- Mostrar una vista utilizando el gestor de ventanas en la pantalla de bloqueo
- Programáticamente activar la pantalla en android
- Iniciar actividad externa mientras el teléfono está bloqueado
- Mantener un seguimiento de la vista agregada a WindowManager (no función findViewById ()?)
- WindowManager $ BadTokenException no se puede agregar la ventana
- Actividad de Android sobre la pantalla de bloqueo predeterminada
- Ventana de superposición del sistema causa problemas de tacto para el teclado y el botón Atrás
Hice un montón de investigación adicional sobre esto, en su mayoría pawing a través del código fuente de Android. En su mayor parte, Panel parece ser sinónimo de Sub-Window , ya que las sub-ventanas están definidas en WindowManager.LayoutParams
. Es decir, tipos de ventanas entre FIRST_SUB_WINDOW
y LAST_SUB_WINDOW
, inclusive.
Por ejemplo, desde WindowManagerGlobal.addView()
:
// If this is a panel window, then find the window it is being // attached to for future reference. if (wparams.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW && wparams.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) { final int count = mViews.size(); for (int i = 0; i < count; i++) { if (mRoots.get(i).mWindow.asBinder() == wparams.token) { panelParentView = mViews.get(i); } } }
Si alguien sabe que esto es inexacto, o tiene una definición más amplia o diferente de Panel , por favor hágamelo saber.
- ¿Cómo puedo guardar mi mapa de bits correctamente por segunda vez?
- ¿Por qué TextView (con un ID) no guarda automáticamente su estado?