Context.CreateWindowContext Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| CreateWindowContext(Int32, Bundle) |
Crea un contexto para una ventana que no es de actividad. |
| CreateWindowContext(Display, Int32, Bundle) |
Crea un |
CreateWindowContext(Int32, Bundle)
Crea un contexto para una ventana que no es de actividad.
[Android.Runtime.Register("createWindowContext", "(ILandroid/os/Bundle;)Landroid/content/Context;", "GetCreateWindowContext_ILandroid_os_Bundle_Handler", ApiSince=30)]
public virtual Android.Content.Context CreateWindowContext(int type, Android.OS.Bundle? options);
[<Android.Runtime.Register("createWindowContext", "(ILandroid/os/Bundle;)Landroid/content/Context;", "GetCreateWindowContext_ILandroid_os_Bundle_Handler", ApiSince=30)>]
abstract member CreateWindowContext : int * Android.OS.Bundle -> Android.Content.Context
override this.CreateWindowContext : int * Android.OS.Bundle -> Android.Content.Context
Parámetros
- type
- Int32
Tipo de ventana en WindowManager.LayoutParams
- options
- Bundle
Un lote usado para pasar opciones relacionadas con ventanas
Devoluciones
Context que se puede usar para crear ventanas que noandroid.app.Activity activity sean.
- Atributos
Comentarios
Crea un contexto para una ventana que no es de actividad.
Un contexto de ventana es un contexto que se puede usar para agregar ventanas que no son de actividad, como android.view.WindowManager.LayoutParams#TYPE_APPLICATION_OVERLAY. Se debe crear un contexto de ventana a partir de un contexto que tenga asociado Display, como android.app.Activity Activity o un contexto creado con #createDisplayContext(Display).
El contexto de la ventana se crea con el adecuado Configuration para el área de la pantalla que pueden ocupar las ventanas creadas con ella; se debe usar cuando android.view.LayoutInflater inflating las vistas, de modo que se puedan inflar con el adecuado Resources.
A continuación se muestra un código de ejemplo para <>agregar una ventana de superposición de aplicación en la pantalla principal:</b>
...
final DisplayManager dm = anyContext.getSystemService(DisplayManager.class);
final Display primaryDisplay = dm.getDisplay(DEFAULT_DISPLAY);
final Context windowContext = anyContext.createDisplayContext(primaryDisplay)
.createWindowContext(TYPE_APPLICATION_OVERLAY, null);
final View overlayView = Inflater.from(windowContext).inflate(someLayoutXml, null);
// WindowManager.LayoutParams initialization
...
// The types used in addView and createWindowContext must match.
mParams.type = TYPE_APPLICATION_OVERLAY;
...
windowContext.getSystemService(WindowManager.class).addView(overlayView, mParams);
La configuración y los recursos de este contexto se ajustan a un área de la pantalla donde se agregarán las ventanas con el tipo proporcionado. <b>Tenga en cuenta que todas las ventanas asociadas al mismo contexto tendrán una afinidad y solo se pueden mover juntas entre diferentes pantallas o áreas de una pantalla.</b> Si es necesario agregar diferentes tipos de ventanas o ventanas no asociadas, se deben usar contextos independientes.
Crear un contexto de ventana es una operación costosa. El uso indebido de esta API puede dar lugar a una enorme caída del rendimiento. El procedimiento recomendado es usar el mismo contexto de ventana siempre que sea posible. Un enfoque consiste en crear un contexto de ventana con un tipo de ventana específico y mostrarlo y usarlo en todas partes que sea necesario.
Después Build.VERSION_CODES#Sde , el contexto de la ventana proporciona la capacidad de recibir cambios de configuración para el token existente reemplazando el android.view.WindowManager.LayoutParams#token token de pasado android.view.WindowManager.LayoutParams en WindowManager#addView(View, LayoutParams). Esto resulta útil cuando una aplicación necesita adjuntar su ventana a una actividad existente para el uso compartido de tokens de ventana.
Tenga en cuenta que el contexto de la ventana en Build.VERSION_CODES#R no tenía esta funcionalidad. Se trata de un no-op para el contexto de la ventana en Build.VERSION_CODES#R.
A continuación se muestra el código de ejemplo para <>adjuntar un token existente a un contexto de ventana:</b>
final DisplayManager dm = anyContext.getSystemService(DisplayManager.class);
final Display primaryDisplay = dm.getDisplay(DEFAULT_DISPLAY);
final Context windowContext = anyContext.createWindowContext(primaryDisplay,
TYPE_APPLICATION, null);
// Get an existing token.
final IBinder existingToken = activity.getWindow().getAttributes().token;
// The types used in addView() and createWindowContext() must match.
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(TYPE_APPLICATION);
params.token = existingToken;
// After WindowManager#addView(), the server side will extract the provided token from
// LayoutParams#token (existingToken in the sample code), and switch to propagate
// configuration changes from the node associated with the provided token.
windowContext.getSystemService(WindowManager.class).addView(overlayView, mParams);
Después Build.VERSION_CODES#Sde , el contexto de la ventana proporciona la capacidad de escuchar sus Configuration cambios llamando #registerComponentCallbacks(ComponentCallbacks)a , mientras que otros tipos de Context registrarán en ComponentCallbacks#getApplicationContext() its Application context. Tenga en cuenta que el contexto de ventana solo propaga la ComponentCallbacks#onConfigurationChanged(Configuration) devolución de llamada.
ComponentCallbacks#onLowMemory() u otras devoluciones de llamada en ComponentCallbacks2 no se invocarán.
Tenga en cuenta que el uso android.app.Application o android.app.Service el contexto de las consultas relacionadas con la interfaz de usuario pueden dar lugar a problemas de diseño o continuidad en dispositivos con tamaños de pantalla variables (por ejemplo, plegables) o en modos de varias ventanas, ya que estos contextos que no son de interfaz de usuario pueden no reflejar los Configuration cambios para el contenedor visual.
Java documentación para android.content.Context.createWindowContext(int, android.os.Bundle).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Se aplica a
CreateWindowContext(Display, Int32, Bundle)
Crea un Context para una ventana que noandroid.app.Activity activity sea en la clase especificada Display.
[Android.Runtime.Register("createWindowContext", "(Landroid/view/Display;ILandroid/os/Bundle;)Landroid/content/Context;", "GetCreateWindowContext_Landroid_view_Display_ILandroid_os_Bundle_Handler", ApiSince=31)]
public virtual Android.Content.Context CreateWindowContext(Android.Views.Display display, int type, Android.OS.Bundle? options);
[<Android.Runtime.Register("createWindowContext", "(Landroid/view/Display;ILandroid/os/Bundle;)Landroid/content/Context;", "GetCreateWindowContext_Landroid_view_Display_ILandroid_os_Bundle_Handler", ApiSince=31)>]
abstract member CreateWindowContext : Android.Views.Display * int * Android.OS.Bundle -> Android.Content.Context
override this.CreateWindowContext : Android.Views.Display * int * Android.OS.Bundle -> Android.Content.Context
Parámetros
- display
- Display
que Display se va a asociar a
- type
- Int32
Tipo de ventana en WindowManager.LayoutParams
- options
- Bundle
Un lote usado para pasar opciones relacionadas con la ventana.
Devoluciones
Context que se puede usar para crear ventanas que noandroid.app.Activity activity sean.
- Atributos
Comentarios
Crea un Context para una ventana que noandroid.app.Activity activity sea en la clase especificada Display.
De forma similar a #createWindowContext(int, Bundle), pero display se pasa , en lugar de usar implícitamente .#getDisplay() original Context's Display
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.