# Quoi de neuf dans Xamarin Essentials 1.1 ?

> Lors de la BUILD 2018, je vous annonçais l’arrivée de Xamarin Essentials, une bibliothèque de classe facilitant la vie aux développeurs Xamarin. Celle ci vient…

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [Quoi de neuf dans Xamarin Essentials 1.1 ?](https://jeromegiacomini.net/fr/articles/2019/03/26/xamarin-essentials-1-1)
- Publié le: 2019-03-26
- Dernière modification: 2026-09-05
- Thèmes: .NET, C#, DevOps, Xamarin

Lors de la BUILD 2018, [je vous annonçais l’arrivée de Xamarin Essentials](https://blogs.infinitesquare.com/posts/build2018/xamarin-essentials-une-librairie-pour-les-dominer-toutes), une bibliothèque de classe facilitant la vie aux développeurs Xamarin.

Celle-ci vient tout juste de passer en version 1.1 et nous allons découvrir ensemble les nouveautés que ça apporte.

![](https://jeromegiacomini.net/Blog/wp-content/uploads/2019/03/Essentials.png)

## Les nouvelles fonctionnalités

Quatre nouvelles fonctionnalités font leur apparition :

– un pour helper pour faciliter l’utilisation des couleurs

– un helper pour faciliter l’utilisation des tailles (Point, Size, Rectangle)

– la possibilité de personnaliser les couleurs du navigateur

– la possibilité de détecter une secousse

### Color Helper

Dans les applications Xamarin il fallait toujours un helper pour convertir les couleurs d’un format à un autre.

Pour obtenir une couleur à partir d’un code hexadécimal il suffit de :

```csharp

System.Drawing.Color red = ColorConverters.FromHex("#FF0000");
```


Une fois la couleur créée il existe de nombres méthodes d’extension permettant de la modifier simplement :

ToUInt

MultiplyAlpha,

WithHue,

WithAlpha,

WithSaturation,

WithLuminosity,

…

Cette couleur est peut-être convertie facilement en couleur de la plateforme grâce à la méthode suivante :

```csharp

var platformColor = red.ToPlatformColor();
```


L’inverse est aussi possible :

```csharp

var platformColor = UIColor.Red;
var systemColor = platformColor .ToSystemColor();
```


[Plus d’infos, par ici.](https://docs.microsoft.com/fr-fr/xamarin/essentials/color-converters)

### Size Helper

Convertir des unités de mesure (Point, Rectangle, Size…) dans des structure universelle n’a jamais été chose aisé.

Avec ces nouvelles API tout est géré pour nous.

**Exemple d&#8217;utilisation avec la structure Point :**

```csharp

var system = new System.Drawing.Point(x, y);

// Convertit vers CoreGraphics.CGPoint, Android.Graphics.Point, etWindows.Foundation.Point
var platform = system.ToPlatformSize();

// Reconvertit vers System.Drawing.Point
var system2 = platform.ToSystemSize();
```


Les classes **System.Drawing.Point**, **System.Drawing.Rectangle**, **System.Drawing.Size** sont gérées par défaut.

[Plus d’infos, par ici.](https://docs.microsoft.com/fr-fr/xamarin/essentials/platform-extensions)

### Détecter les secousses

La première chose pour détecter les secousses il faut s’abonner à la méthode **ShakeDetected**.

```csharp

Accelerometer.ShakeDetected  += ShakeDetected;
```


Puis nous pouvons personnaliser le code lorsqu’une secousse est détectée.

```csharp

private void Accelerometer_ShakeDetected (object sender, EventArgs e)
{
     Debug.WriteLine("Secousse détectée");
}
```


[Plus d’infos, par ici.](https://docs.microsoft.com/fr-fr/xamarin/essentials/detect-shake)

### Ouvrir son navigateur, plus de personnalisation

La première version de l’API Browser.OpenAsync permettait d’ouvrir le navigateur sans autre fioriture.

Avec cette mise à jour de l’API, Xamarin Essentials nous donne accès à plus de personnalisation :

– possibilité de personnaliser la couleur des boutons de fermeture du navigateur

– possibilité d’afficher ou non la TitleBar

**Ouverture du navigateur avec les nouvelles options : **

```csharp

await Browser.OpenAsync(uri, new BrowserLaunchOptions
                {
                    LaunchMode = BrowserLaunchMode.SystemPreferred,
                    TitleMode = BrowserTitleMode.Show,
                    PreferredToolbarColor = Color.Red,
                    PreferredControlColor = Color.Pink
                });
```


[Plus d’infos, par ici.](https://docs.microsoft.com/fr-fr/xamarin/essentials/open-browser)

## Bug fixes

Cette version contient aussi un 6 bugs fixes, dont 5 ont été corrigés par la communauté.
- [GH-714](https://github.com/xamarin/Essentials/issues/714) Corrige un bug sur le lancement des Uri iOS .
- [GH-698](https://github.com/xamarin/Essentials/issues/698) Corrige un bug sur l’affichage de la connectivité sur Android
- [GH-704](https://github.com/xamarin/Essentials/issues/704) Corrige un bug sur le SecureStorage iOS
- [GH-694](https://github.com/xamarin/Essentials/issues/694) Les émulateur VS d’Hyper V sont désormais détecté comme des émulateurs
- [GH-636](https://github.com/xamarin/Essentials/issues/636) Optimisation sur les préférences
- [GH-707](https://github.com/xamarin/Essentials/issues/707) Corrige l’envoi de mail vide sur UWP


## Le support d’autres plateformes ?

Deux plateformes sont en train d’être supportées :
- macOS
- Tizen


[L’ajout du backend macOS](https://github.com/xamarin/Essentials/pull/653) est a plus de moitié de son développement.

[L’ajout de Tizen est fait en collaboration avec les équipes de Samsung.](https://github.com/xamarin/Essentials/pull/555) Celui-ci est quasiment terminé.

## Pour conclure :

L’arrivée de Xamarin Essentials a vraiment simplifié la vie aux développeurs Xamarin, et le fait que les équipes de Xamarin enrichissent de jour en jour cette bibliothèque est une bonne nouvelle pour nous.

Happy coding 🙂

## Pour aller plus loin :
- [Release notes de Xamarin Essentials](https://github.com/xamarin/essentials/wiki/Release-Notes)
- [Xamarin Essentials : Une librairie pour les dominer toutes](https://blogs.infinitesquare.com/posts/build2018/xamarin-essentials-une-librairie-pour-les-dominer-toutes)
- [Le GitHub de Xamarin Essentials](https://github.com/xamarin/Essentials)
