Adapter son application pour les Nexus 6 et 9

Adapter son application pour les Nexus 6 et 9

Le développement sous Android permet de créer des applications qui sont compatibles avec une très grande variété d'appareil. Google nous propose un petit récapitulatif des modifications à réaliser sur nos applications pour les derniers Nexus.

Nexus 6

Le Nexus 6 possède un écran de 5,96 pouces avec une résolution de 2560 par 1440 pixels.

 

Contrôler les assets

Le Nexus 6 possède un DPI de 560, ce qui permet de prévoir dans quelle dossier sera récupérer l'icône de l'application. Pour rappel, pour avoir un icône adapté au DPI du smartphone, il faut utiliser des dossiers mipmap dans res :

res/
   mipmap-mdpi/
      ic_launcher.png
   mipmap
-hdpi/
      ic_launcher.png
   mipmap
-xhdpi/
      ic_launcher.png  
   mipmap
-xxhdpi/
      ic_launcher.png
   mipmap
-xxxhdpi/  
      ic_launcher
.png     <- utiliser par le nexus 6

Pour avoir l'icône adaptée au Nexus 6, il faut utiliser le dossier mipmap-xxxhdpi (qui sera réduit). Si aucune icône est présent dans ce dossier, l'application utilisera l'icône des autres dossiers (xxhdpi si présent, sinon xhdpi et ainsi de suite) mais il sera grossit. Avoir une icône adaptée à chaque résolution (donc dans chaque dossier) permet d'avoir une icône non pixelisée pour toutes les tailles d'écrans, mais l'APK final sera plus lourd.

Ce principe est aussi utilisé pour les images de notre application :

res/
   drawable-mdpi/
      ic_sunny.png
   drawable
-hdpi/
      ic_sunny.png
   drawable
-xhdpi/  
      ic_sunny
.png
   drawable
-xxhdpi/   <- utilisé par le nexus 6 si non disponible dans xxxhdpi
      ic_sunny.png
   drawable
-xxxhdpi/  <- utilisé par le nexus 6 par défaut
      ic_sunny.png

 

Filtre Google Play

Pour que l'application soit indiquée compatible sur le Play Store et qu'on utilise la balise <compatible-screens> dans le fichier AndroidManifest.xml, il faut ajouter la configuration du nexus 6. A noté que cette technique de filtrage est déconseillé par Google car quand un nouveau appareil est disponible, mais que sa résolution ne passe pas le filtre alors il est nécessaire aux développeurs de publier une mise à jour.

 

Nexus 9

nexus 9

La Nexus 9 possède un écran de 8,9 pouces avec une résolution de 2048 par 1536 pixels avec un ratio de 4:3. Avec ses caractéristiques, cette Nexus utilise les éléments graphiques en xhdpi.

 

Le NDK

Cette tablette à la particularité de posséder un processeur 64 bits, il faut donc modifier les applications développer avec le NDK. Il faut mettre à jour la valeur APP_ABI du fichier Application.mk :

APP_ABI := armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64

 

Support du clavier physique

Avec la Nexus 9 on peut choisir de prendre la keyboard Folio. Il est d'abord conseillé de ne pas bloquer la rotation de l'écran (Son écran étant en 4:3, peu de modification d'interface ont lieu entre les modes portrait et paysage).

Au niveau de l'utilisation du clavier, il faut penser à attribuer un raccourcie sur les boutons de l'action bar. Il suffit d'ajouter une ligne à chaque bouton :

Le raccourcie indiqué est à utiliser par l'utilisateur avec la touche Ctrl.

On peut aussi intéragir avec les raccourcies clavier dans notre application :

 

En règle général

Pour tenir compte non seulement du DPI de chaque appareil, mais aussi de sa largeur et son ratio, Google préconise d'utiliser les size qualifier. Avec cette technique on peut jouer avec l'affichage en regardant les largeurs.

Par exemple pour la page d'accueil on utilise :

  • Le fichier res/layout/activity_main.xml pour une vision depuis un smartphone.
  • Le fichier res/layout-w600dp/activity_main.xml pour un écran plus large que 600dp, pour par exemple afficher avoir deux panneau
  • Le fichier res/layout-w720dp/activity_main.xml pour un écran plus large que 720dp, pour par exemple afficher de multiple panneau

Il est aussi possible de personnaliser ces styles par rapport à la largeur de l'écran :

Dans cet exemple, le s devant w600 permet de sélectionner les écrans moins larges que 600dp. Donc ici on affiche un texte de taille Large si l'écran est plus petit que 600dp sinon la taille du texte est moyenne.