Xamarin.Essentials: Rozszerzenia platformy

Xamarin.Essentials Udostępnia kilka metod rozszerzenia platformy, gdy trzeba pracować z typami platformy, takimi jak Rect, Size i Point. Oznacza to, że można konwertować między wersją System tych typów dla określonych typów systemów iOS, Android i UWP.

Rozpocznij

Aby rozpocząć korzystanie z tego interfejsu API, przeczytaj przewodnik wprowadzający , Xamarin.Essentials aby upewnić się, że biblioteka jest prawidłowo zainstalowana i skonfigurowana w projektach.

Korzystanie z rozszerzeń platformy

Dodaj odwołanie do Xamarin.Essentials klasy:

using Xamarin.Essentials;

Wszystkie rozszerzenia platformy mogą być wywoływane tylko z projektu systemu iOS, Android lub platformy UWP.

Rozszerzenia systemu Android

Dostęp do tych rozszerzeń można uzyskać tylko z projektu systemu Android.

Kontekst i działanie aplikacji

Za pomocą rozszerzeń platformy w Platform klasie można uzyskać dostęp do bieżącej Context lub Activity uruchomionej aplikacji.


var context = Platform.AppContext;

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

Jeśli występuje sytuacja, w której Activity jest to konieczne, ale aplikacja nie została w pełni uruchomiona WaitForActivityAsync , należy użyć metody .

var activity = await Platform.WaitForActivityAsync();

Cykl życia aktywności

Oprócz pobierania bieżącego działania możesz również zarejestrować się w celu uzyskania zdarzeń cyklu życia.

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

Stany aktywności są następujące:

  • Utworzone
  • Wznowione
  • Wstrzymana
  • Zniszczone
  • SaveInstanceState
  • Rozpoczęto
  • Zatrzymana

Przeczytaj dokumentację cyklu życia działania, aby dowiedzieć się więcej.

Rozszerzenia systemu iOS

Dostęp do tych rozszerzeń można uzyskać tylko z projektu systemu iOS.

Bieżący element UIViewController

Uzyskaj dostęp do aktualnie widocznego UIViewControllerelementu :

var vc = Platform.GetCurrentUIViewController();

Ta metoda zwróci null wartość , jeśli nie można wykryć klasy UIViewController.

Rozszerzenia międzyplatformowe

Te rozszerzenia istnieją na każdej platformie.

Osoba

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

Rozmiar

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

Prostokąt

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

interfejs API