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