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