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

API