Xamarin.Essentials: Ekstensi Platform
Xamarin.Essentials menyediakan beberapa metode ekstensi platform ketika harus bekerja dengan jenis platform seperti Rect, Size, dan Point. Ini berarti Anda dapat mengonversi antara System
versi jenis ini untuk jenis spesifik iOS, Android, dan UWP mereka.
Memulai
Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.
Menggunakan Ekstensi Platform
Tambahkan referensi ke Xamarin.Essentials di kelas Anda:
using Xamarin.Essentials;
Semua ekstensi platform hanya dapat dipanggil dari proyek iOS, Android, atau UWP.
Ekstensi Android
Ekstensi ini hanya dapat diakses dari proyek Android.
Konteks & Aktivitas Aplikasi
Menggunakan ekstensi platform di Platform
kelas Anda bisa mendapatkan akses ke aplikasi saat ini Context
atau Activity
untuk aplikasi yang sedang berjalan.
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Jika ada situasi di mana Activity
diperlukan, tetapi aplikasi belum sepenuhnya dimulai maka WaitForActivityAsync
metode harus digunakan.
var activity = await Platform.WaitForActivityAsync();
Siklus Hidup Aktivitas
Selain mendapatkan Aktivitas saat ini, Anda juga dapat mendaftar untuk peristiwa siklus hidup.
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();
Status aktivitas adalah sebagai berikut:
- Dibuat
- Resumed
- Dijeda
- Dihancurkan
- SaveInstanceState
- Dimulai
- Dihentikan
Baca dokumentasi Siklus Hidup Aktivitas untuk mempelajari lebih lanjut.
Ekstensi iOS
Ekstensi ini hanya dapat diakses dari proyek iOS.
UIViewController saat ini
Dapatkan akses ke yang saat ini terlihat UIViewController
:
var vc = Platform.GetCurrentUIViewController();
Metode ini akan kembali null
jika tidak dapat mendeteksi UIViewController
.
Ekstensi Lintas Platform
Ekstensi ini ada di setiap platform.
Titik
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();
Ukuran
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();
Persegi
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();