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();