Bagikan melalui


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

API