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

API