Context.CreateWindowContext Méthode

Définition

Surcharges

Nom Description
CreateWindowContext(Int32, Bundle)

Crée un contexte pour une fenêtre non-activité.

CreateWindowContext(Display, Int32, Bundle)

Crée une Context fenêtre non-fenêtreandroid.app.Activity activity sur l’élément donné Display.

CreateWindowContext(Int32, Bundle)

Crée un contexte pour une fenêtre non-activité.

[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

Paramètres

type
Int32

Type de fenêtre dans WindowManager.LayoutParams

options
Bundle

Ensemble utilisé pour passer des options liées aux fenêtres

Retours

Qui Context peut être utilisé pour créer des fenêtres non-windowsandroid.app.Activity activity .

Attributs

Remarques

Crée un contexte pour une fenêtre non-activité.

Un contexte de fenêtre est un contexte qui peut être utilisé pour ajouter des fenêtres non-activité, telles que android.view.WindowManager.LayoutParams#TYPE_APPLICATION_OVERLAY. Un contexte de fenêtre doit être créé à partir d’un contexte associé Display, tel qu’un android.app.Activity Activity contexte créé avec #createDisplayContext(Display).

Le contexte de fenêtre est créé avec le approprié Configuration pour la zone de l’affichage que les fenêtres créées avec elle peuvent occuper ; il doit être utilisé lorsque android.view.LayoutInflater inflating les vues, de sorte qu’elles peuvent être gonflées avec le bon.Resources

Voici un exemple de code permettant d’ajouter <>une fenêtre de superposition d’application sur l’affichage 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 configuration et les ressources de ce contexte sont ajustées à une zone de l’affichage où les fenêtres avec type fourni seront ajoutées. <b>Notez que toutes les fenêtres associées au même contexte auront une affinité et peuvent uniquement être déplacées ensemble entre différents affichages ou zones d’un affichage.</b> S’il est nécessaire d’ajouter différents types de fenêtres ou fenêtres non associées, des contextes distincts doivent être utilisés.

La création d’un contexte de fenêtre est une opération coûteuse. L’utilisation incorrecte de cette API peut entraîner une chute énorme des performances. La meilleure pratique consiste à utiliser le même contexte de fenêtre lorsque cela est possible. Une approche consiste à créer un contexte de fenêtre avec un type de fenêtre spécifique et à l’afficher et à l’utiliser partout où il est nécessaire.

Après Build.VERSION_CODES#S, le contexte de fenêtre fournit la possibilité de recevoir des modifications de configuration pour le jeton existant en remplaçant le android.view.WindowManager.LayoutParams#token tokenandroid.view.WindowManager.LayoutParams passage.WindowManager#addView(View, LayoutParams) Cela est utile lorsqu’une application doit attacher sa fenêtre à une activité existante pour le partage de jetons de fenêtre dans le cas d’usage.

Notez que le contexte de fenêtre dans Build.VERSION_CODES#R lequel cette fonctionnalité n’a pas été présente. Il s’agit d’une no-op pour le contexte de fenêtre dans Build.VERSION_CODES#R.

Voici un exemple de code permettant d’attacher <>un jeton existant à un contexte de fenêtre :</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);

Après Build.VERSION_CODES#S, le contexte de fenêtre fournit la possibilité d’écouter ses Configuration modifications en appelant #registerComponentCallbacks(ComponentCallbacks), tandis que d’autres types d’inscriptions Context seront enregistrés sur ComponentCallbacks#getApplicationContext() its Application context. Notez que le contexte de fenêtre ne propage que le ComponentCallbacks#onConfigurationChanged(Configuration) rappel. ComponentCallbacks#onLowMemory() ou d’autres rappels ne ComponentCallbacks2 seront pas appelés.

Notez que l’utilisation android.app.Application ou android.app.Service le contexte des requêtes liées à l’interface utilisateur peut entraîner des problèmes de disposition ou de continuité sur les appareils avec des tailles d’écran variables (p. ex. pliables) ou dans des modes multi-fenêtres, car ces contextes non-interface utilisateur peuvent ne pas refléter les Configuration modifications apportées au conteneur visuel.

Java documentation pour android.content.Context.createWindowContext(int, android.os.Bundle).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à

CreateWindowContext(Display, Int32, Bundle)

Crée une Context fenêtre non-fenêtreandroid.app.Activity activity sur l’élément donné 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

Paramètres

display
Display

À Display associer à

type
Int32

Type de fenêtre dans WindowManager.LayoutParams

options
Bundle

Ensemble utilisé pour passer des options liées aux fenêtres.

Retours

Qui Context peut être utilisé pour créer des fenêtres non-windowsandroid.app.Activity activity .

Attributs

Remarques

Crée une Context fenêtre non-fenêtreandroid.app.Activity activity sur l’élément donné Display.

Similaire à #createWindowContext(int, Bundle), mais le display est passé, au lieu d’utiliser implicitement le #getDisplay() original Context's Display.

Java documentation pour android.content.Context.createWindowContext(android.view.Display, int, android.os.Bundle).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à