Xamarin.Essentials: Rozšíření platformy
Xamarin.Essentials poskytuje několik metod rozšíření platformy při práci s typy platforem, jako jsou Rect, Size a Point. To znamená, že můžete převést mezi System
verzí těchto typů pro jejich typy pro iOS, Android a UPW.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si úvodní příručkuXamarin.Essentials, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Použití rozšíření platformy
Přidejte do Xamarin.Essentials předmětu odkaz:
using Xamarin.Essentials;
Všechna rozšíření platformy se dají volat jenom z projektu pro iOS, Android nebo UPW.
Rozšíření pro Android
K těmto rozšířením je možné přistupovat jenom z projektu Pro Android.
Kontext aplikace a aktivita
Pomocí rozšíření platformy ve Platform
třídě můžete získat přístup k aktuální Context
nebo Activity
spuštěné aplikaci.
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Pokud je situace, kdy Activity
je potřeba, ale aplikace nebyla plně spuštěna, WaitForActivityAsync
měla by se použít metoda.
var activity = await Platform.WaitForActivityAsync();
Životní cyklus aktivity
Kromě získání aktuální aktivity můžete také zaregistrovat události životního cyklu.
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();
Stavy aktivit jsou následující:
- Vytvořeno
- Obnovení
- Pozastaveno
- Zničeny
- SaveInstanceState
- Zahájeno
- Zastaveno
Další informace najdete v dokumentaci k životnímu cyklu aktivit.
Rozšíření iOSu
K těmto rozšířením se dá přistupovat jenom z projektu iOS.
Current UIViewController
Získání přístupu k aktuálně viditelnému UIViewController
:
var vc = Platform.GetCurrentUIViewController();
Tato metoda se vrátí null
, pokud nelze rozpoznat UIViewController
.
Rozšíření pro různé platformy
Tato rozšíření existují na každé platformě.
Bod
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();
Velikost
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();
Obdélník
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();