•
o
o
•
o
o
o
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
L’assistant demande ensuite plusieurs informations :
• Nom de l’application, ex : HelloWorld,
• Nom de la classe principale : MainActivity,
• Nom du layout de la classe principale : activity_main2,
• Nom du layout du menu principal : menu_main
Tout peut être renommé ultérieurement, voir refactor/rename.
Le package du logiciel a été défini dans le premier écran.
•
•
•
o
o
o
o
•
•
•
•
o
o
o
o
•
Les ressources (disposition des vues dans les interfaces, menus,
images vectorielles, textes. . . ) sont définies à l’aide de fichiers XML.
Studio fournit des éditeurs spécialisés pour ces fichiers, par exemple :
Formulaires pour :
• res/values/strings.xml : textes de l’interface,
• Éditeurs graphiques pour
• res/layout/*.xml : disposition des contrôles sur l’interface.
Les ressources (disposition des vues dans les interfaces, menus,
images vectorielles, textes. . . ) sont définies à l’aide de fichiers XML.
Studio fournit des éditeurs spécialisés pour ces fichiers, par exemple :
Formulaires pour :
• res/values/strings.xml : textes de l’interface,
• Éditeurs graphiques pour :
• res/layout/*.xml : disposition des contrôles sur l’interface.
Ces éditeurs sont beaucoup plus confortables que le XML brut, mais ne
permettent pas de tout faire (widgets custom et plantages).
Assez souvent, il faut éditer le source XML directement :
Chaque modification d’un source ou d’une ressource fait reconstruire le
projet. C’est automatique. Dans certains cas (travail avec un
gestionnaire de sources comme Subversion ou Git), il peut être
nécessaire de reconstruire manuellement. Il suffit de sélectionner le
menu Build/Clean Project. Ces actions lancent l’exécution de Gradle.
Gradle est un outil de construction de projets comme Make (projets C++
sur Unix), Ant (projets Java dans Eclipse) et Maven.
De même que make se sert d’un fichier Makefile, Gradle se sert d’un
fichier nommé build.gradle pour construire le projet.
C’est assez compliqué car AndroidStudio permet de travailler avec des
projets regroupant plusieurs applications ou modules. Donc en réalité, il
y a deux build.gradle :
• un script build.gradle dans le dossier racine du projet.
• Il indique quelles sont les dépendances générales des applications.
• un dossier app contenant les applications du projet.
• un script build.gradle dans le dossier app pour compiler les
applications.
Un projet AndroidStudio est constitué ainsi :
Certains projets font appel à des bibliothèques externes. Cela fait
généralement rajouter quelques lignes dans les deux build.gradle.
Chaque écran est géré par une instance d’une sous-classe perso de
Activity. Sa méthode onCreate définit, entre autres, ce qui doit être
affiché sur l’écran :
I
L’interface est mise en place par setContentView(identifiant de
ressource).
L’interface est mise en place parsetContentView
setContentView(identifiant de ressource). La méthode spécifie
l’identifiant de l’interface à afficher dans l’écran :
R.layout.main. C’est un entier, identifiant d’une disposition de vues : un
layout.
Le SDK Android (aapt) construit automatiquement une classe statique
appelée R. Elle ne contient
que des constantes entières groupées par catégories : id, layout, menu. . .
Cette classe R est générée automatiquement par ce que vous mettez
dans le dossier res : dispositions, identifiants, chaînes. . . Certaines de
ces ressources sont des fichiers XML, d’autres sont des images PNG.
Par exemple, res/values/strings.xml :
Un fichier XML : nœuds racine, éléments, attributs, valeurs, texte.
Un fichier XML : nœuds racine, éléments, attributs, valeurs, texte.
Dans le cas d’Android, il y a un grand nombre d’éléments et d’attributs
normalisés. Pour les distinguer,ils ont été regroupés dans le namespace
android. Dans la norme XML, le namespace par défaut n’est jamais
appliqué aux attributs, donc il faut mettre le préfixe sur chacun d’eux.
compliqué :
}
•
•
•
•
•
•
•
•
•
</LinearLayout>
</LinearLayout>
•
•
:
•
•
•
•
•
•
.
•
•
•
android:id
<Button
android:id="@+id/btn_ok"
android:text="@string/ok"
... />
•
•
<EditText
android:id="@+id/email_address"
android:inputType="textEmailAddress«
... />