Xamarin.Essentials: estensioni della piattaforma

Xamarin.Essentials fornisce diversi metodi di estensione della piattaforma quando è necessario usare tipi di piattaforma, ad esempio Rect, Size e Point. Ciò significa che è possibile convertire la versione System di questi tipi nella versione iOS, Android e UWP dei tipi specifici.

Operazioni preliminari

Per iniziare a usare questa API, leggere la guida introduttiva per Xamarin.Essentials assicurarsi che la libreria sia installata e configurata correttamente nei progetti.

Uso delle estensioni di piattaforma

Aggiungere un riferimento a Xamarin.Essentials nella classe :

using Xamarin.Essentials;

Tutte le estensioni di piattaforma possono essere chiamate solo dal progetto iOS, Android o UWP.

Estensioni Android

È possibile accedere a queste estensioni solo da un progetto Android.

Contesto e attività dell'applicazione

Usando le estensioni della piattaforma nella classe Platform è possibile ottenere l'accesso all'elemento Context o Activity corrente dell'app in esecuzione.


var context = Platform.AppContext;

// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;

Se si verifica una situazione in cui è necessario l'elemento Activity, ma l'applicazione non è stata avviata completamente, sarà necessario usare il metodo WaitForActivityAsync.

var activity = await Platform.WaitForActivityAsync();

Ciclo di vita dell'attività

Oltre a ottenere l'attività corrente, è anche possibile registrarsi per gli eventi del ciclo di vita.

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    Xamarin.Essentials.Platform.Init(this, bundle);

    Xamarin.Essentials.Platform.ActivityStateChanged += Platform_ActivityStateChanged;
}

protected override void OnDestroy()
{
    base.OnDestroy();
    Xamarin.Essentials.Platform.ActivityStateChanged -= Platform_ActivityStateChanged;
}

void Platform_ActivityStateChanged(object sender, Xamarin.Essentials.ActivityStateChangedEventArgs e) =>
    Toast.MakeText(this, e.State.ToString(), ToastLength.Short).Show();

Gli stati dell'attività sono i seguenti:

  • Data di creazione
  • Resumed
  • In pausa
  • Eliminata
  • SaveInstanceState
  • Avviato
  • Arrestato

Altre informazioni sono disponibili nella documentazione Ciclo di vita dell'attività.

Estensioni iOS

È possibile accedere a queste estensioni solo da un progetto iOS.

UIViewController corrente

Ottenere l'accesso a UIViewController attualmente visibile:

var vc = Platform.GetCurrentUIViewController();

Questo metodo restituisce null se non è possibile rilevare UIViewController.

Estensioni multipiattaforma

Queste estensioni sono presenti in tutte le piattaforme.

Point

var system = new System.Drawing.Point(x, y);

// Convert to CoreGraphics.CGPoint, Android.Graphics.Point, and Windows.Foundation.Point
var platform = system.ToPlatformPoint();

// Back to System.Drawing.Point
var system2 = platform.ToSystemPoint();

Dimensione

var system = new System.Drawing.Size(width, height);

// Convert to CoreGraphics.CGSize, Android.Util.Size, and Windows.Foundation.Size
var platform = system.ToPlatformSize();

// Back to System.Drawing.Size
var system2 = platform.ToSystemSize();

Rettangolo

var system = new System.Drawing.Rectangle(x, y, width, height);

// Convert to CoreGraphics.CGRect, Android.Graphics.Rect, and Windows.Foundation.Rect
var platform = system.ToPlatformRectangle();

// Back to System.Drawing.Rectangle
var system2 = platform.ToSystemRectangle();

API