Xamarin.Essentials: Extensions de plateforme

Xamarin.Essentials fournit plusieurs méthodes d’extension de plateforme lorsque vous devez utiliser des types de plateforme tels que Rect, Size et Point. Cela signifie que vous pouvez convertir la version System de ces types en types spécifiques iOS, Android et UWP.

Bien démarrer

Pour commencer à utiliser cette API, lisez le guide de prise en main pour Xamarin.Essentials vous assurer que la bibliothèque est correctement installée et configurée dans vos projets.

Utilisation d’extensions de plateforme

Ajoutez une référence à Xamarin.Essentials votre classe :

using Xamarin.Essentials;

Toutes les extensions de plateforme peuvent uniquement être appelées depuis le projet iOS, Android ou UWP.

Extensions Android

Ces extensions sont accessibles uniquement à partir d’un projet Android.

Contexte et activité de l’application

À l’aide des extensions de plateforme de la classe Platform, vous pouvez accéder à Context ou à Activity actif pour l’application en cours d’exécution.


var context = Platform.AppContext;

// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;

Si Activity est nécessaire, mais que l’application n’a pas été entièrement démarrée, la méthode WaitForActivityAsync doit être utilisée.

var activity = await Platform.WaitForActivityAsync();

Cycle de vie des activités

Outre l’obtention de l’activité en cours, vous pouvez également vous inscrire aux événements de cycle de vie.

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

Les états d’activité sont les suivants :

  • Création
  • Repris
  • Suspendu
  • Détruit
  • SaveInstanceState
  • Démarré
  • Arrêté

Pour en savoir plus, consultez la documentation relative au cycle de vie de l’activité.

Extensions iOS

Ces extensions sont accessibles uniquement à partir d’un projet iOS.

Current UIViewController

Accédez au UIViewController actuellement visible :

var vc = Platform.GetCurrentUIViewController();

Cette méthode retourne null s’il n’est pas possible de détecter un UIViewController.

Extensions multiplateforme

Ces extensions existent sur toutes les plateformes.

Point

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

Taille

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

Rectangle

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