• 30 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/13/20

Trucs et astuces utiles

Log in or subscribe for free to enjoy all this course has to offer!

Affichez rapidement un message à l'utilisateur avec Toast

Dans un code qui s'exécute de manière synchrone avec l'interface utilisateur (donc pas dans un Thread cou un AsyncTask  par exemple), on peut faire apparaitre de courtes notifications en bas de l'écran via la bibliothèque Toast. Par exemple, l'affichage suivant :

Exemple de Toast
Exemple de Toast

S'obtient avec la commande :

Toast.makeText(this,"Et hop ! un message à l'écran :D", Toast.LENGTH_LONG).show();

Dans cet appel :

  • Le premier paramètre est le contexte. Donc une référence vers l'activité courante.

  • Le second paramètre est le message à afficher.

  • Le troisième paramètre est la durée de l'affichage souhaité. Il n'y a que 2 valeurs possibles :Toast.LENGTH_LONGetToast.LENGTH_SHORT.

  • Ne pas oublier d'appeler la méthode show()  sur le toast créé.

Utilisez le moniteur et la bibliothèque Log  pour déboguer vos applications

Lorsque notre application Android crash avec un message "L'application trucmuche s'est arrêtée", on a envie de détruire notre tablette et d'arracher ses câbles à notre ordinateur. Mais l'information de l'exception qui a généré l'erreur se trouve dans les logs. En regardant le moniteur Android, vous pourrez récupérer la pile d'exception Java classique.

Pour ouvrir le moniteur, il suffit de cliquer sur l'onglet "Android Monitor" qui se trouve en bas à gauche de votre fenêtre d'édition.

Onglet d'ouverture d'Android Monitor
Onglet d'ouverture d'Android Monitor

Vous pouvez vous aussi générer des traces qui iront enrichir ces logs (l'équivalent du bon vieuxSystem.out.println("Je suis passé par ici");). La bibliothèque Log est assez intéressante, car elle permet de renvoyer une chaine de caractères dans les logs, avec une étiquette et un niveau de sévérité. L'outil rajoutera également un horodatage de l'information.

Par exemple  Log.d("Étiquette", "Message");  publiera un message avec une sévérité de debug, tandis que  Log.e("Étiquette", "Message");  publiera le même message, mais avec une sévérité d'erreur.

Ensuite, dans le moniteur, il est possible de regarder les logs générés et de les filtrer via le producteur, l'étiquette ou le niveau de sévérité.

C'est très pratique :)  et cela peut être fait depuis tous les processus, sans avoir besoin de se soucier de synchronisation :D.

Empêchez la mise en veille de l'écran

Cela se configure séparément au niveau de chaque activité, via l'activation du drapeauFLAG_KEEP_SCREEN_ON. Il est possible de le faire de manière programmatique ou via le XML du Layout de l'activité.

Côté Java, on fera, dans le onCreate  :

setContentView(R.layout.activity_main);
// ....
// Quelque part après le chargemebt du ContentView :
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

De manière équivalente, il est possible de le faire dans le XML du Layout principal :

<UnLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
...
</UnLayout>

Cette solution permettra de conserver l'écran allumé sans maintenir le CPU éveillé et sans nécessiter de permission.

Bloquez la rotation de l'écran

Cette configuration se fait pour chaque activité, indépendamment. Il est possible de le configurer via le XML ou de manière programmatique. En XML, c'est via le Manifest que l'on rajoutera la proporiété screenOrientation en paramètre de l'activité :

<activity
android:screenOrientation="landscape"
android:name="....Activity">
....
</activity>

Sinon, si l'on préfère le faire via Java, alors il suffit d'appeler la méthodesetRequestedOrientation, hértiée d'Activity  :

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Exécutez une activité en plein écran

Pour alléger l'affichage autour d'une activité, et donc la passer en plein écran, il suffit de changer son style d'affichage. Dans le Manifest, au niveau de la déclaration de l'activité, choisir un style de typeNoTitleBar.Fullscreen  :

<activity
android:name="..."
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
</activity>

Personnalisez l'icône de votre application

Les icônes ne sont rien d'autre que des images PNG placées dans les différents dossiers mipmap. Le suffixe des différents nom de dossier mimap correspond à la taille de l'image. Fournir la même image à différentes tailles permet d'afficher l'icône le plus proprement possible sur les différents écrans (avec différentes densités de points). Les différentes résolutions attendues suivant la résolution sont rappelées ici :

Dossier mipmap

Résolution attendue pour l'icône

mipmap-mdpi

48x48 pixels

mipmap-hdpi

72x72 pixels

mipmap-xhdpi

96x96 pixels

mipmap-xxhdpi

144x144 pixels

mipmap-xxxhdpi

192x192 pixels

De votre point de vue, il suffit de faire une image à différentes résolutions, et remplacer les icônes par défaut par vos PNG pour que cela fonctionne.

Example of certificate of achievement
Example of certificate of achievement