Xamarin.Essentials: Extensões de plataforma

Xamarin.Essentials fornece vários métodos de extensão de plataforma ao ter que trabalhar com tipos de plataforma, como Rect, Size e Point. Isso significa que você pode converter entre a versão System desses tipos para iOS, Android e tipos específicos de UWP.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Usando as extensões de plataforma

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

Todas as extensões de plataforma só podem ser chamadas do iOS, do Android ou do projeto UWP.

Extensões do Android

Essas extensões só podem ser acessadas por um projeto Android.

Atividade e contexto do aplicativo

Usando as extensões de plataforma na classe Platform, você pode acessar o Context ou o Activity atuais do aplicativo em execução.


var context = Platform.AppContext;

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

Se houver uma situação em que o Activity seja necessário, mas o aplicativo ainda não tenha sido totalmente iniciado, o método WaitForActivityAsync deverá ser usado.

var activity = await Platform.WaitForActivityAsync();

Ciclo de vida da atividade

Além de obter a Atividade atual, você também pode registrar os eventos do 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();

Os estados da atividade são os seguintes:

  • Criado
  • Retomada
  • Pausada
  • Destruído
  • SaveInstanceState
  • Iniciado
  • Interrompido

Leia a documentação do Ciclo de vida da atividade para saber mais.

Extensões do iOS

Essas extensões só podem ser acessadas por um projeto iOS.

UIViewController atual

Obtenha acesso ao UIViewController atualmente visível:

var vc = Platform.GetCurrentUIViewController();

Esse método retornará null se não for possível detectar um UIViewController.

Extensões multiplataforma

Essas extensões existem em todas as plataformas.

Ponto

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

Tamanho

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

Retâ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