Xamarin.Essentials: Plattformerweiterungen
Xamarin.Essentials umfasst mehrere Plattformerweiterungsmethoden für die Arbeit mit Plattformtypen wie „Rect“, „Size“ und „Point“. Das bedeutet, dass Sie die System
-Version dieser Typen in die iOS-, Android- und UWP-spezifischen Typen konvertieren können.
Erste Schritte
Lesen Sie zum Einstieg in die Verwendung dieser API den Leitfaden mit ersten Schritte für Xamarin.Essentials, um sicherzustellen, dass die Bibliothek ordnungsgemäß installiert und in Ihren Projekten eingerichtet ist.
Verwenden von Plattformerweiterungen
Fügen Sie in Ihrer Klasse einen Verweis auf Xamarin.Essentials hinzu:
using Xamarin.Essentials;
Alle Plattformerweiterungen können nur über das iOS-, Android- oder UWP-Projekt aufgerufen werden.
Android-Erweiterungen
Auf diese Erweiterungen kann nur in einem Android-Projekt zugegriffen werden.
Anwendungskontext und -aktivität
Mithilfe der Plattformerweiterungen in der Platform
-Klasse können Sie Zugriff auf den aktuellen Context
oder die aktuelle Activity
für die ausgeführte App erhalten.
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Bei einer Situation, in der die Activity
benötigt wird, die Anwendung aber noch nicht vollständig gestartet wurde, muss die WaitForActivityAsync
-Methode verwendet werden.
var activity = await Platform.WaitForActivityAsync();
Aktivitätslebenszyklus
Zusätzlich zum Abrufen der aktuellen Aktivität können Sie auch Lebenszyklusereignisse registrieren.
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();
Es gibt die folgenden Aktivitätszustände:
- Erstellt
- Resumed
- Paused
- Wird zerstört
- SaveInstanceState
- Started
- Beendet
Weitere Informationen finden Sie in der Dokumentation zum Aktivitätslebenszyklus.
iOS-Erweiterungen
Auf diese Erweiterungen kann nur in einem iOS-Projekt zugegriffen werden.
Aktueller UIViewController
Greifen Sie auf den aktuell sichtbaren UIViewController
zu:
var vc = Platform.GetCurrentUIViewController();
Diese Methode gibt null
zurück, wenn kein UIViewController
erkannt werden kann.
Plattformübergreifende Erweiterungen
Diese Erweiterungen sind auf jeder Plattform vorhanden.
Punkt
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();
Größe
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();
Rechteck
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();