Java pour Android


Un "Hello World" en Java pour Android

Première application pour Android

Décrit, à partir d’un programme simple, les bases de la programmation pour Android

Pour les développeurs Java, Android est une aubaine puisqu’ils n’auront pas à apprendre un nouveau langage. Pour autant, il y a un certain nombre de spécificités à connaître propre au développement d’applications pour mobiles en général et pour Android en particulier. Google fournit également un outil gratuit très puissant qui se nomme Android Studio. Pour commencer en douceur, nous allons voir quelques caractéristiques sur l’architecture d’un projet et quelques notions comme la classe Activity et la gestion d’une interface, notions que l’on retrouvera quelque soit l’application.


 Présentation

Comme un projet d’application Android peut contenir un nombre important de fichiers et que cela pourrait être rébarbatif de tous les décrire, nous allons réaliser d’abord une première application Hello World et nous présenterons les principaux fichiers générés par l’EDI   qu’il est indispensable ce connaître pour commencer à programmer pour Android en Java. Nous verrons également ce qu’est une Activity, un Layout et comment utiliser des fichiers de ressources.

 Ressources utilisées

La couche logicielle et matérielle utilisée pour cet article est :

  • OS : Linux Ubuntu 16.04 LTS (pourrait être MacOS ou Windows)
  • JDK   pré-installé : 1.8 d’Oracle
  • Android Studio : 3.2.1
  • Périphérique physique de test : Samsung Galaxy S3 sous Android 4.3

 Création de la première application

Lancez Android Studio. Si vous n’avez pas de projet en cours, vous devriez vous retrouver avec l’écran suivant :

Sélectionnez la première option du menu Start a new Android Studio project se trouvant dans la liste de droite. Cela va lancer un assistant composé de plusieurs écrans nous permettant de définir les principales caractéristiques de notre application.

Remarque : La liste de gauche correspond aux projets déjà créés. Si vous n’avez pas encore créé de projet cette liste devrait être vide.

Le premier écran permet de définir le nom de l’application.

Comme il s’agit d’un premier programme, je l’ai nommé HelloWorld selon la tradition.

Le second champ est le nom de domaine de votre société. Cette information est importante car elle permettra de définir l’identifiant de votre application. Ce nom étant unique, il permettra de différencier votre application d’une autre s’appelant également HelloWorld sur le Play Store de Google par exemple.

Le troisième champ est le dossier de votre disque dur dans lequel vous désirez sauvegarder votre projet.

Le quatrième champ est le nom du package java composé de votre domaine et du nom du programme, formalisme habituel pour une application Java.

Les deux derniers choix ne doivent pas être cochés car nous avons choisi de réaliser un programme en Java.

Remarque : C++ et Kotlin_(langage) sont deux autres langages supportés par Android Studio pour développer des applications pour Android.

Cliquez sur Next. L’écran suivant va nous permettre de préciser le type d’appareil et la version minimale de l’OS Android supportée.

Dans un premier temps, nous pouvons laisser les options par défaut. Les types de périphériques cibles seront les téléphones et tablettes et notre application pourra être exécutée sur des appareils équipés d’une version d’Android 4.3 ou supérieure. L’écran nous indique que cela correspondra actuellement à plus de 95% des appareils. Il est possible d’avoir plus d’informations sur les différentes version en cliquant sur Help me choose.

Cliquez sur Next pour afficher l’écran pour sélectionner un squelette de projet.

Comme on le verra par la suite, une application Android sera composée d’au moins une classe Java de type Activity. Android Studio nous propose plusieur choix de squelettes en fonction du type d’application à réaliser. Pour une première application, le mieux est de sélectionner Empty Activity

Cliquez sur Next pour passer à l’écran suivant :

Cet écran permet simplement de définir le nom de la classe Activity qui sera générée ainsi que son layout correspondant. Le layout correspond à la définition de l’interface correspondant à l’activité, c’est à dire ce qui s’affichera à l’écran. Il est conseillé de garder les noms proposés pour nous permettre de nous y retrouver.

Cliquez sur finish pour générer le squelette du projet. Vous devriez vous retrouver avec l’écran suivant :

 Organisation du projet

L’écran est décomposé en 3 zone principales. La zone centrale affiche le code. Celle du bas affiche un certain nombre d’informations en fonction de l’onglet sélectionné. Cette zone, entre autre, nous permettra de suivre l’évolution de la compilation du programme et de vérifier qu’il n’y a pas eues d’erreurs. La vue de gauche va nous permettre de voir l’arborescence des fichiers composant le projet. Par défaut, c’est le mode Android qui doit être affiché. Cette vue affiche l’arborescence selon la logique d’un projet Android, cette dernière ne correspondant pas exactement à celle des répertoires se trouvant sur votre disque dur. C’est celle que nous allons voir pour l’instant. Pour notre projet HelloWorld, j’ai déroulé quelques dossiers pour nous permettre de voir les fichiers principaux.

Le projet est composé de 2 dossiers principaux : app et GradleScripts. Pour l’instant, vous n’avez pas besoin de connaître le contenu du second dossier. Ce sont des fichiers de configuration de gestion de votre projet et de construction du programme. Il sont utilisé par le programme de gestion de projets Gradle.

Nous allons donc voir maintenant les principaux dossiers et fichiers de app.

Le fichier AndroidManisfest.xml

Ce fichier se trouve dans le dossier manifests. Double-cliquez sur le nom pour l’afficher dans la vue centrale de l’éditeur.

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.    package="com.leppf.android.exemples.helloworld">
  4.  
  5.     <application
  6.        android:allowBackup="true"
  7.        android:icon="@mipmap/ic_launcher"
  8.        android:label="@string/app_name"
  9.        android:roundIcon="@mipmap/ic_launcher_round"
  10.        android:supportsRtl="true"
  11.        android:theme="@style/AppTheme">
  12.         <activity android:name=".MainActivity">
  13.             <intent-filter>
  14.                 <action android:name="android.intent.action.MAIN" />
  15.  
  16.                 <category android:name="android.intent.category.LAUNCHER" />
  17.             </intent-filter>
  18.         </activity>
  19.     </application>
  20.  
  21. </manifest>

Télécharger

Ce fichier a un peu le même rôle que le fichier manifest d’un programme Java classique mais adapté à Android. Ce fichier définit entre autre, l’icône de l’application, son titre et référence une activité nommée MainActivity qui correspond à la classe générée automatiquement par le studio et que nous allons bientôt voir.

 Filtre d’intention

Dans la section de définition de l’activité, se trouve une autre section très importante nommée :

<ident-filter>.

Cette dernière contient pour l’instant les 2 lignes suivantes :

<action android:name="android.intent.action.MAIN" />

Cette ligne indique que l’activité, correspond au point d’entrée de l’application.

<category android:name="android.intent.category.LAUNCHER" />

Cette ligne indique que le composant peut être lancé par l’utilisateur.

La définition des 2 lignes précédente fera que l’application sera ajoutée à la liste des autres applications disponibles dans la grille des icônes de l’appareil.

Dans un premier temps, il n’est pas indispensable de connaître toutes les options de ce fichier. Nous y reviendrons donc plus tard.

Le fichier MainActivity

Ce fichier se trouve dans le package de l’application qui se trouve lui-même dans le dossier java. C’est dans ce dossier que se trouvera l’ensemble de votre code java.

  1. package com.leppf.android.exemples.helloworld;
  2.  
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5.  
  6. public class MainActivity extends AppCompatActivity {
  7.  
  8.     @Override
  9.     protected void onCreate(Bundle savedInstanceState) {
  10.         super.onCreate(savedInstanceState);
  11.         setContentView(R.layout.activity_main);
  12.     }
  13. }

Télécharger

Ce fichier qui contient le code de la classe MainActivity a été généré automatiquement par l’assistant de création du projet. Nous voyons que cette classe hérite d’une classe AppCompatActivity qui implémente certaines fonctionnalités. Cette classe hérite notamment d’une méthode onCreate() qui a été surchargée. Le code contenu dans cette méthode sera exécutée lors de la création de l’application. Pour l’instant, il contient deux lignes. La première ne fait qu’appeler le constructeur parent en lui passant le paramètre Bundle (non utilisé dans cet exemple), et la seconde, définit le layout lié à l’activité. Ce layout est en fait l’IHM qui sera affichée et qui est défini dans un fichier xml se trouvant dans le dossier res qui contient les ressources de l’application que nous allons voir maintenant.

Remarque : L’objet nommé "R" est créé automatiquement et géré par Android Studio. Cet objet est très important car vous en aurez besoins dès que vous devrez agir sur un composant de l’interface définit dans le fichier xml et votre code Java.

Les ressources de l’application

Le dossier res contient l’ensemble des ressources de l’application comme les layouts (IHM), des icônes et des images, des chaînes de caractères etc…

Le fichier activity_main.xml

Ce fichier au format xml est le fichier définissant l’IHM reliée à la classe MainActivity vue précédemment. Il se trouve dans le dossier res/layout.

Double-cliquez sur son nom pour l’afficher dans la vue principale. Vous pourrez choisir entre deux types d’affichage principaux grâce aux 2 onglets Design et Text se trouvant en bas de la vue. Cela permet de définir l’interface soit directement dans le code XML soit de manière interactive à la souris. Lorsque vous travaillez dans un mode, l’autre vue se met automatiquement à jour.

 Génération et exécution du programme

Maintenant que notre application a été créée il est temps de la compiler et de l’exécuter. Pour cela, il suffit de cliquer sur l’icône suivante se trouvant dans la barre d’outil :

Vous devriez avoir une fenêtre vous permettant de sélectionner le périphérique cible d’exécution

Remarque : Si c’est la première utilisation d’Android Studio et si vous n’avez pas connecté de périphérique sur votre ordinateur, vous devrez au moins créer un nouveau périphérique virtuel en cliquant sur le bouton correspondant avant de continuer.
Remarque : Lorsqu’il manque des librairies ou des machines virtuelles, ce qui peut être le cas lors d’une première utilisation, l’EDI   va chercher et télécharger ces dernières sur Internet ce qui peut prendre un peu de temps.

Sélectionner le périphérique et cliquez sur Ok.

Au bout de quelques instant l’application doit apparaître soit sur votre périphérique physique soit dans une fenêtre d’affichage du périphérique virtuel.

Remarque : L’avantage des périphérique virtuels et de pouvoir tester sur des machines avec des caractéristiques variées. Mais de disposer d’une machine réelle est également intéressante pour tester l’interface tactile et aussi dans le cas d’un poste de développement peu puissant car le chargement et l’exécution sur une machine virtuelle peut prendre un certain temps surtout lors de la première exécution.

 Autres ressources de l’application

Avant de revenir sur l’interface, nous allons voir comment modifier le titre de l’application. Retournons dans le fichier Manifest. Ce dernier contient la ligne suivante :

android:label="@string/app_name"
Remarque : Il se peut que vous voyiez la chaîne HelloWorld dans l’éditeur. En cliquant dessus, vous devriez voir la chaîne @string/app_name apparaître à sa place.

En fait le titre n’est pas directement définit à cet endroit mais dans un fichier ressources de strings et portant app_name comme nom. Ce fichier se trouve dans le dossier res/values/strings.xml.

Soit vous ouvrez ce fichier à partir de la vue de gauche soit vous positionnez le curseur sur la chaîne app_name depuis le manifest et faite CTRL+CLICK_GAUCHE pour ouvrir directement le fichier ressource correspondant.

  1. <resources>
  2.     <string name="app_name">HelloWorld</string>
  3. </resources>

Télécharger

Nous avons bien une chaîne nommée app_name. Il suffit de la modifier en entrant par exemple "Bonjour à tous" pour modifier notre titre.

Si vous affichez à nouveau l’IHM à partir du fichier Layout vous devriez voir le titre modifié.

 Modification de l’affichage

Dans notre application, Android Studio a ajouté un composant qui affiche au centre de l’écran le message "Hello World !". Nous pourrions avoir envie de changer le message par "C’est ma première application" par exemple.

Ce message s’affiche grâce à un composant nommé TextView. Nous pouvons voir sa définition dans le fichier activity_main.xml. En mode Text cela correspond à la balise suivante :

  1. <TextView
  2.        android:layout_width="wrap_content"
  3.        android:layout_height="wrap_content"
  4.        android:text="Hello World!"
  5.        app:layout_constraintBottom_toBottomOf="parent"
  6.        app:layout_constraintLeft_toLeftOf="parent"
  7.        app:layout_constraintRight_toRightOf="parent"
  8.        app:layout_constraintTop_toTopOf="parent" />

Télécharger

Le message à afficher correspond au paramètre

android:text="Hello World!"

Pour modifier ce libellé Android Studio nous propose plusieurs solutions :

Modifier directement dans le fichier Layout

Une première solution est de remplacer le texte entre guillemet par le nôtre directement dans l’éditeur.

Une autre solution est de passer en mode Design, de sélectionner le composant en cliquant dessus puis de modifier le champ text dans l’inspecteur de propriétés du TextView se trouvant dans le volet à droite.

Modifier le libellé à partir d’une ressource

Maintenant nous allons voir comment modifier le texte en faisant référence à une ressource.

Remarque : Il est conseillé de mettre les textes et libellés à afficher dans des fichiers de ressources séparés plutôt que directement dans le fichier de layout. Une des raisons est que cela facilitera l’internationalisation de l’application mais aussi, facilitera la modification d’un libellé utilisé à plusieurs endroits de l’application.

Pour cela, au lieu de modifier directement le champ text, nous allons cliquer sur à droite du champ. Une fenêtre listant les ressources existantes s’affiche.

Nous allons ajouter une ressource en cliquant sur le bouton Add new resource. Je lui donne un nom et une valeur et je clique sur Ok pour valider. Nous laissons les autres options par défaut pour que la ressource s’enregistre dans le fichier strings.xml par défaut.

Normalement, le texte se met à jour dans l’interface. Nous pouvons également voir la modification dans le code xml du fichier layout.

android:text="@string/msg_accueil"

Nous retrouvons la même syntaxe de référence à une ressource de string que pour le titre de l’application vue précédemment.

 Conclusion

Nous venons de voir comment créer une application et l’exécuter. Celle-ci ne fait rien à part afficher un message à l’écran mais nous avons pu utiliser une classe Activity et voir comment l’on définit un layout et d’autres ressources, des objets que vous utiliserez dans toutes (pratiquement) applications pour Android et que nous approfondirons dans un autre article.


Article n° 127

Crée par: chris

Créé le: 3 janvier

Modifié le: 26 juin

Nombre de visites: 296

Popularité: 13 %

Popularité absolue: 3

Mots clés de cet article


SPIP

2003-2019 LePpf
Plan du site | | Contact | RSS 2.0

Visiteurs connectés : 7

Nombre moyen de visites quotidiennes sur le site: 267