Xamarin.Essentials: расширения платформы

Xamarin.Essentials предоставляет несколько методов расширения платформы при работе с такими типами платформы, как Rect, Size и Point. Это означает, что можно осуществлять преобразование между версией System этих типов для их конкретных типов в iOS, Android и UWP.

Начать

Чтобы начать использовать этот API, ознакомьтесь с руководством по началу работы с Xamarin.Essentials, чтобы правильно настроить и установить библиотеку в проектах.

Использование расширений платформы

Добавьте ссылку на Xamarin.Essentials в своем классе:

using Xamarin.Essentials;

Все расширения платформы могут вызываться только из проектов iOS, Android или UWP.

Расширения Android

Доступ к этим расширениям можно получить только из проекта Android.

Действие и контекст приложения

Используя расширения платформы в классе Platform, можно получить доступ к текущим элементам Context или Activity для работающего приложения.


var context = Platform.AppContext;

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

Если возникает ситуация, когда требуется Activity, но приложение запущено не полностью, следует использовать метод WaitForActivityAsync.

var activity = await Platform.WaitForActivityAsync();

Жизненный цикл действия

Кроме получения текущего действия, вы также можете зарегистрироваться для получения событий жизненного цикла.

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

Ниже перечислены состояния действий:

  • Создание
  • Возобновлено
  • Приостановлен
  • Уничтожаются
  • SaveInstanceState
  • Запуск
  • Остановлено

См. документацию по жизненному циклу действия.

Расширения iOS

Доступ к этим расширениям можно получить только из проекта iOS.

Current UIViewController

Получите доступ к текущему представлению UIViewController:

var vc = Platform.GetCurrentUIViewController();

Этот метод возвращает null, если не удается обнаружить UIViewController.

Кроссплатформенные расширения

Эти расширения существуют на каждой платформе.

Point

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

Размер

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

Прямоугольник

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