Context.CreateWindowContext Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
| Nome | Descrizione |
|---|---|
| CreateWindowContext(Int32, Bundle) |
Crea un contesto per una finestra non attività. |
| CreateWindowContext(Display, Int32, Bundle) |
Crea un oggetto |
CreateWindowContext(Int32, Bundle)
Crea un contesto per una finestra non attività.
[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
Parametri
- type
- Int32
Tipo di finestra in WindowManager.LayoutParams
- options
- Bundle
Bundle usato per passare le opzioni correlate alla finestra
Valori restituiti
Oggetto Context che può essere utilizzato per creare finestre nonandroid.app.Activity activity .
- Attributi
Commenti
Crea un contesto per una finestra non attività.
Un contesto di finestra è un contesto che può essere usato per aggiungere finestre non di attività, ad esempio android.view.WindowManager.LayoutParams#TYPE_APPLICATION_OVERLAY. È necessario creare un contesto di finestra da un contesto associato Display, ad esempio android.app.Activity Activity o un contesto creato con #createDisplayContext(Display).
Il contesto della finestra viene creato con l'oggetto appropriato Configuration per l'area dello schermo che le finestre create con esso possono occupare. È necessario usarlo quando android.view.LayoutInflater inflating le visualizzazioni, in modo che possano essere gonfiate con il corretto Resources.
Di seguito è riportato un codice di esempio per <b>aggiungere una finestra di sovrimpressione dell'applicazione nella visualizzazione primaria:</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 configurazione e le risorse del contesto vengono modificate in un'area della visualizzazione in cui verranno aggiunte le finestre con tipo specificato. <b>Si noti che tutte le finestre associate allo stesso contesto avranno un'affinità e possono essere spostate solo tra diverse visualizzazioni o aree in uno schermo.</b> Se è necessario aggiungere tipi di finestra diversi o finestre non associate, è necessario usare contesti separati.
La creazione di un contesto di finestra è un'operazione costosa. L'uso improprio di questa API può causare un calo enorme delle prestazioni. La procedura consigliata consiste nell'usare lo stesso contesto di finestra quando possibile. Un approccio consiste nel creare un contesto di finestra con tipo di finestra specifico e visualizzarlo e usarlo ovunque sia necessario.
Dopo Build.VERSION_CODES#S, il contesto della finestra offre la possibilità di ricevere le modifiche di configurazione per il token esistente eseguendo l'override dell'oggetto android.view.WindowManager.LayoutParams#token tokenandroid.view.WindowManager.LayoutParams passato in WindowManager#addView(View, LayoutParams). Ciò è utile quando un'applicazione deve collegare la finestra a un'attività esistente per il caso d'uso di condivisione di token finestra.
Si noti che il contesto della finestra in Build.VERSION_CODES#R non ha questa funzionalità. Si tratta di un no-op per il contesto della finestra in Build.VERSION_CODES#R.
Di seguito è riportato il codice di esempio per <collegare>un token esistente a un contesto di finestra:</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);
Dopo Build.VERSION_CODES#S, il contesto della finestra offre la possibilità di ascoltare Configuration le modifiche chiamando #registerComponentCallbacks(ComponentCallbacks), mentre altri tipi di Context verranno registrati in ComponentCallbacks#getApplicationContext() its Application context. Si noti che il contesto della finestra propaga ComponentCallbacks#onConfigurationChanged(Configuration) solo il callback.
ComponentCallbacks#onLowMemory() o altri callback in ComponentCallbacks2 non verranno richiamati.
Si noti che l'uso android.app.Application o android.app.Service il contesto per le query correlate all'interfaccia utente possono causare problemi di layout o continuità nei dispositivi con dimensioni dello schermo variabili (ad esempio, piegabili) o in modalità a più finestre, poiché questi contesti non dell'interfaccia utente potrebbero non riflettere le Configuration modifiche per il contenitore visivo.
per android.content.Context.createWindowContext(int, android.os.Bundle).
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.
Si applica a
CreateWindowContext(Display, Int32, Bundle)
Crea un oggetto Context per una finestra nonandroid.app.Activity activity nell'oggetto specificato 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
Parametri
- display
- Display
Oggetto Display da associare a
- type
- Int32
Tipo di finestra in WindowManager.LayoutParams
- options
- Bundle
Bundle utilizzato per passare le opzioni correlate alla finestra.
Valori restituiti
Oggetto Context che può essere utilizzato per creare finestre nonandroid.app.Activity activity .
- Attributi
Commenti
Crea un oggetto Context per una finestra nonandroid.app.Activity activity nell'oggetto specificato Display.
Simile a #createWindowContext(int, Bundle), ma viene display passato , anziché usare in modo implicito .#getDisplay() original Context's Display
per android.content.Context.createWindowContext(android.view.Display, int, android.os.Bundle).
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.