Xamarin.Essentials: extensiones de plataformaXamarin.Essentials: Platform Extensions

Xamarin.Essentials ofrece varios métodos de extensión de plataforma al trabajar con tipos de plataforma como Rect, Size y Point.Xamarin.Essentials provides several platform extension methods when having to work with platform types such as Rect, Size, and Point. Esto significa que puede convertir la versión System de estos tipos a tipos específicos de iOS, Android y UWP.This means that you can convert between the System version of these types for their iOS, Android, and UWP specific types.

Primeros pasosGet started

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.To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Uso de las extensiones de plataformaUsing Platform Extensions

Agregue una referencia a Xamarin.Essentials en su clase:Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

Todas las extensiones de plataforma solo se pueden llamar desde proyectos UWP, iOS o Android.All platform extensions can only be called from the iOS, Android, or UWP project.

Extensiones de AndroidAndroid Extensions

Solo se puede acceder a estas extensiones desde un proyecto de Android.These extensions can only be accessed from an Android project.

Actividad y contexto de la aplicaciónApplication Context & Activity

Con las extensiones de plataforma de la clase Platform, puede acceder a los elementos Context o Activity para la aplicación en ejecución.Using the platform extensions in the Platform class you can get access to the current Context or Activity for the running app.


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.If there is a situation where the Activity is needed, but the application hasn't fully started then the WaitForActivityAsync method should be used.

var activity = await Platform.WaitForActivityAsync();

Ciclo de vida de la actividadActivity Lifecycle

Además de obtener la actividad actual, también puede registrarse en los eventos de ciclo de vida.In addition to getting the current Activity, you can also register for lifecycle events.

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:Activity states are the following:

  • CreadoCreated
  • ReanudadoResumed
  • En pausaPaused
  • DestruidoDestroyed
  • SaveInstanceStateSaveInstanceState
  • ComenzadoStarted
  • DetenidoStopped

Lea la documentación Ciclo de vida de la actividad para obtener más información.Read the Activity Lifecycle documentation to learn more.

Extensiones de iOSiOS Extensions

Solo se puede acceder a estas extensiones desde un proyecto de iOS.These extensions can only be accessed from an iOS project.

UIViewController actualCurrent UIViewController

Acceder al elemento UIViewControlleractualmente visible:Gain access to the currently visible UIViewController:

var vc = Platform.GetCurrentUIViewController();

Este método devolverá null si no puede detectar un elemento UIViewController.This method will return null if unable to detect a UIViewController.

Extensiones multiplataformaCross-platform Extensions

Estas extensiones existen en todas las plataformas.These extensions exist in every platform.

PuntoPoint

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ñoSize

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ánguloRectangle

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

APIAPI