Xamarin.Essentials: extensiones de plataforma
Xamarin.Essentials ofrece varios métodos de extensión de plataforma cuando se trabaja con tipos de plataforma como Rect, Size y Point. Esto significa que puede convertir la versión System
de estos tipos a tipos específicos de iOS, Android y UWP.
Primeros pasos
Para empezar a usar esta API, lea la guía de introducción para Xamarin.Essentials con el fin de asegurarse de que la biblioteca está correctamente instalada y configurada en los proyectos.
Uso de las extensiones de plataforma
Agregue una referencia a Xamarin.Essentials en la clase:
using Xamarin.Essentials;
Todas las extensiones de plataforma solo se pueden llamar desde proyectos UWP, iOS o Android.
Extensiones de Android
Solo se puede acceder a estas extensiones desde un proyecto de Android.
Actividad y contexto de la aplicación
Con las extensiones de plataforma de la clase Platform
, puede acceder a los elementos Context
o Activity
para la aplicación en ejecución.
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Si hay una situación en la que se necesita el elemento Activity
, pero la aplicación no se ha iniciado totalmente, se debe usar el método WaitForActivityAsync
.
var activity = await Platform.WaitForActivityAsync();
Ciclo de vida de la actividad
Además de obtener la actividad actual, también puede registrarse en los eventos de ciclo de vida.
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();
Los estados de actividad son los siguientes:
- Creado
- Reanudado
- En pausa
- Destruido
- SaveInstanceState
- Comenzado
- Detenido
Lea la documentación Ciclo de vida de la actividad para obtener más información.
Extensiones de iOS
Solo se puede acceder a estas extensiones desde un proyecto de iOS.
UIViewController actual
Acceder al elemento UIViewController
actualmente visible:
var vc = Platform.GetCurrentUIViewController();
Este método devolverá null
si no puede detectar un elemento UIViewController
.
Extensiones multiplataforma
Estas extensiones existen en todas las plataformas.
Punto
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();
Tamaño
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();
Rectángulo
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();