0% ont trouvé ce document utile (0 vote)
140 vues79 pages

Cours 3 TDM

Ce document décrit les outils de développement pour les applications Android, notamment Android Studio, le SDK Android et ses composants clés tels que les plateformes, les outils de plateforme, les outils SDK et l'émulateur Android.

Transféré par

Norene Filali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
140 vues79 pages

Cours 3 TDM

Ce document décrit les outils de développement pour les applications Android, notamment Android Studio, le SDK Android et ses composants clés tels que les plateformes, les outils de plateforme, les outils SDK et l'émulateur Android.

Transféré par

Norene Filali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Technologies et Développement Mobile

Nadia Elouali!
[email protected]
2018-2019
Chapitre III : Développement d’applications mobiles sous
Android

!
‣ Outils de développement
!
‣ Bases d’une application Android
!
Interface et Ressources
Application et Activité (cycle de vie)
Gestion des listes
Barre d’action et menus + widgets avancés
!
‣ Persistance des données
SQLite

!2
Développement d’applications mobiles sous Android

‣ Outils de développement

Eclipse

De 2009 à 2014, l’IDE officiellement supporté pour le développement


Android était Eclipse combiné au plugin d'outils de développement d'Android
(ADT - Android Development Tools).

Android Studio

• Depuis 2014, Google officialise Android Studio (IDE IntelliJ ayant subi
l'intégration de fonctionnalités de développement Android) qui devient
alors l'IDE officiel pour Android.

!3
Développement d’applications mobiles sous Android

‣ Outils de développement

(ADT)

Facilité d'installation Moyenne Simple

Langue Nombreuses Anglais

Performance Peut être lourd Rapide

Système de build Ant Gradle

Android Code completion et refactoring Base Avancé

Editeur d'interface graphique Oui Oui

Signature d'APK et gestion de Keystore Oui Oui

http://www.android-dev.fr/presentation_de_android_studio_et_comparatif_avec_adt !4
!5
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio

• Android Studio permet d'avoir un IDE totalement dédié aux développements


Android.

• Le téléchargement d'Android Studio intègre le télécharger du SDK Android

• Il présente une meilleur gestion des dépendances avec gradle

• La version 3.0 (October 2017) ≈ version 3.3.1 (2019)


Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio

• Le kit de développement (SDK - Software Development Kit) d'Android est


un ensemble complet d'outils permettant de faciliter le développement
sous Android. Il inclut principalement :
!
!
!
• Platform-tools
• Platforms
• SDK-tools (tools)
• Build-tools

!6
!7
Développement d’applications mobiles sous Android
‣ Outils de développement

Android Studio
‣ Platform-tools

SDK Android Platform-Tools comprend


des outils d'interface avec la plate-forme
Android, tels que adb, fastboot et
systrace. Ces outils sont requis pour le
développement d'applications Android.

Bien que certaines des nouvelles fonctionnalités de ces outils ne soient


disponibles que pour les versions récentes d'Android, ces outils sont
rétrocompatibles. On n'a donc besoin que d'une version des outils de plate-
forme SDK.
!8
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platform-tools
‣ The Android Debug Bridge (ADB)

Android Debug Bridge (adb) est un outil qui nous permet de communiquer
avec un périphérique. Il facilite diverses actions de l'appareil, telles que
l'installation et le débogage d'applications, et fournit un accès à un shell Unix
que nous pouvons utiliser pour exécuter diverses commandes sur un
appareil.
!9
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platform-tools
‣ Fastboot

Le protocole fastboot est un mécanisme de communication avec les


bootloaders (les chargeurs de démarrage Android). Il nous permet de lancer
une appareil en « mode de réparation », puis de le connecter avec un câble
USB pour pouvoir lui donner des ordres.

‣ Systrace
Systrace nous permet de collecter et d'inspecter les informations de tous les
processus en cours d'exécution sur le périphérique au niveau du système. Il
combine les données du noyau Android, telles que le planificateur de
processeur, l’activité du disque et les threads d’une application, pour générer
un rapport. Cela permet de détecter les fuites d’énergie par exemple.
!10
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platform-tools ‣ Systrace
!11
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platforms
• Chaque version d’Android, dénotée par son API level, apporte des
améliorations et supprime des dispositifs obsolètes.
!12
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platforms

• Chaque version de la plate-forme SDK inclut les packages suivants:

• Le package de la plate-forme Android SDK. Ceci est nécessaire pour


compiler notre application pour cette version.
• Le paquet Sources pour Android (facultatif). Cela inclut les fichiers source
de la plate-forme. Android Studio peut afficher des lignes de code à partir
de ces fichiers lorsque nous déboguons notre application.
!13
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platforms

• Toute application exige un certain niveau d’API : Minimum SDK : il faut au


moins cette API car on utilise certaines classes et méthodes absentes des
précédentes APIs.
!14
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Platforms

• Chaque application exige aussi « Target API » (on indique au système que
nous avons développé et testé l’application pour cette platform). Si la
platform cible n’est pas installée, on ne peut donc pas construire ou tester
l’app (message d’erreur demandant l’installation).

• Si on cible API 26, il faut que la plate-forme 26 soit installé. Notre


application fonctionnera correctement entre l’API 15 (min) au 26 (cible).
Développement d’applications mobiles sous Android
‣ Outils de développement
Android Studio

‣ SDK tools

• Android SDK Tools comprend l'ensemble d'outils de développement et de


débogage pour Android. Il inclut principalement :
!
• Android emulator,
• SDK manager,
• Draw 9-patch tool,
• ProGuard,
• etc.

!15
!16
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ SDK tools
‣ Android Emulator

Pour utiliser un emulateur, Android Studio utilise


une image système Android conçue pour
fonctionner sur le matériel PC.

Le gestionnaire AVD (AVD manager) fournit une interface utilisateur


graphique dans laquelle on peut créer et gérer des périphériques virtuels
Android (AVD), requis par l'émulateur Android.
!17
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Utilisation du AVD Manager Tools -> Android -> AVD Manager
!18
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ SDK tools
Tools -> Android -> SDK Manager , ou bien
‣ SDK Manager
Il nous aide à télécharger les outils, plates-formes et autres composants du
SDK nécessaires au développement de nos applications.
!19
Développement d’applications mobiles sous Android
‣ Outils de développement
Android Studio

‣ SDK tools

‣ Draw 9-patch tool

• C’est un éditeur WYSIWYG qui


nous permet de créer des images
bitmap qui se redimensionnent
automatiquement pour s'adapter
au contenu de la vue (du texte par
exemple) et à la taille de l’écran
(on peut modifier la zone qui doit
être mise à l'échelle).

clic droit sur l'image PNG > Create 9-patch file


!20
Développement d’applications mobiles sous Android
‣ Outils de développement
Android Studio

‣ SDK tools
build.gradle
‣ ProGuard

• Pour que le fichier APK soit aussi petit que possible, nous pouvons activer
la réduction afin de supprimer le code et les ressources inutilisés.
!
• La réduction de code est possible avec ProGuard, qui détecte et supprime
les classes, les champs, les méthodes et les attributs inutilisés d’une
application packagée, y compris ceux des bibliothèques utilisées.
!21
Développement d’applications mobiles sous Android
‣ Outils de développement
Android Studio
‣ SDK tools ‣ ProGuard
• La réduction de code ralentit le temps de build, on ne doit donc éviter si
possible de l’utiliser sur les versions de débogage. Cependant, il est
important de l’activer pour la création de APK final.
un « shrink » évolué : détecte
les paramètres inutilisés des
méthodes, le code mort à
l’intérieur des méthodes, etc.

des noms courts


avec un fichier de
référence mapping.txt

https://blog.octo.com/demystifier-proguard-pour-les-developpeurs-android/
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio

‣ Build-tools

Comme leur nom l'indique, ils représentent les composants nécessaires pour
créer les applications Android.
Cela inclut par exemple :
!
• l'outil «  zipalign  » qui optimise l'application pour utiliser une mémoire
minimale lors de l'exécution avant de générer le fichier APK final,
• dx (l’outil qui convertit les fichiers .java à des fichiers .dex (Dalvik
Executable))
• aapt (Android packaging tool pour créer .APK)
• « apksigner » qui signe l'APK (pour vérification ultérieure)
• etc.
!22
!23
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
๏ Signature d’une application

✦ La publication d’une application nécessite qu’elle soit signée, afin de


pouvoir authentifier sa provenance, et donc être sure lors de la mise à jour
de l’application que le nouveau build est bien issu de la même équipe dé
développement.

✦ Pour signer une application sous Android, il est nécessaire de disposer d’un
KeyStore, un gardien des clés (il centralisera l'ensemble des clefs pour
signer nos applications)

✦ On doit toujours être capable de resigner notre application. En effet, si la


version 1 et la version 2 d’une application ne sont pas signées avec la même
clef, l'utilisateur ne pourra pas faire d'update de la version 1 et sera obligé
d'installer la version 2 comme si celle-ci était une nouvelle application.
!24
Développement d’applications mobiles sous Android
‣ Outils de développement
Android Studio

https://www.youtube.com/watch?v=uF6oAI9ugMg
Développement d’applications
mobiles sous Android
‣ Outils de développement

Android Studio
‣ Gradle

• Le processus de build d’un projet


android est très complexe

• Donc le build d’une app android ne peut


pas se faire à la main ou avec un script.
Nous avons besoin d’un système beaucoup
plus robuste. Il s’agit d’un moteur de
production : Gradle.
!25
!26
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Gradle (moteur de production)

• Un moteur de production est un logiciel dont la fonction principale consiste


à automatiser (ordonnancer et piloter) l'ensemble des actions contribuant, à
partir de données sources, à la production d'un ensemble logiciel
opérationnel.

• Les actions principales :


!
• préprocessing : les transformations sur un code source, avant l'étape
de traduction (compilation ou interprétation).
• compilation,
• éditions des liens : combiner un ou plusieurs fichiers générés par un
compilateur en un seul fichier exécutable,
• etc.
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Gradle

• Gradle est un moteur de production fonctionnant sur la plateforme Java. Il


regroupe les avantages de ses principaux concurrents Maven et Ant.

• Gradle comme la plus part des outils de build doit garantir l’automatisation
: une simple commande doit pouvoir lancer tout le process de build et
rendre invisible toute la complexité.

!27
!28
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Gradle

• Gradle permet d'écrire des tâches de constructions dans un fichier en


utilisant le langage Groovy.

Sous AndroidStudio 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 de l’application (version Gradle Plugin,
buildscript, etc.).
!
• un script build.gradle dans le dossier app pour les paramètres de
construction spécifiques à ce module (info manifest, les frameworks utilisés
(junit), etc.)
!29
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio

‣ Gradle

https://www.udacity.com/course/gradle-for-android-and-java--ud867 (Gradle for Android and Java)


Développement d’applications mobiles sous Android

‣ Outils de développement

!30
!31
Développement d’applications mobiles sous Android

‣ Outils de développement

Android Studio
‣ Gradle

Il est devenu indispensable d’avoir ce genre d’outil pour simplifier le travail


des développeurs android. On doit pouvoir se concentrer sur l’essentiel.
Ecrire du code.
!32
Développement d’applications mobiles sous Android

‣ Outils de développement
Que fait cette icône dans Android Studio?

Et celle là ?

Les composants essentiels du SDK ?

Pourquoi signer une app Android ?

Android requiert que toutes les applications soient signées numériquement


avec un certificat avant de pouvoir être installées. Il utilise ce certificat pour
identifier l'auteur d'une application. Le développeur de l'application détient la
clé privée du certificat.
!33
Développement d’applications mobiles sous Android

‣ Outils de développement
Est-ce qu’on peut utiliser Gradle avec Eclipse ?

Quel est le nom du fichier de script de construction Gradle ? build.gradle

Pourquoi existe-t-il deux fichiers build.gradle dans un projet Android Studio ?

✓ Le fichier de construction Gradle de projet de niveau supérieur permet


d'ajouter les options de configuration communes à tous les modules
d'application du projet (dépendances, version Gradle Plugin, etc.).
!
✓ Chaque module d'application possède également son propre fichier
build.gradle pour les paramètres de construction spécifiques à ce module (si
on utilise un autre module, en tant que bibliothèque locale par exemple, on
aura un autre fichier gradle).
Chapitre III : Développement d’applications mobiles sous
Android

!
‣ Outils de développement
!
‣ Bases d’une application Android
!
Interface et Ressources
Application et Activité (cycle de vie)
Gestion des listes
Barre d’action et menus + widgets avancés
!
‣ Persistance des données
SQLite
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : Activity

• L’interface utilisateur d’une application Android est composée d’écrans. Un


écran correspond à une activité.

• Les dialogues et les pop-up ne sont pas des activités, ils se


superposent temporairement à l’écran d’une activité.

• Android permet de naviguer d’une activité (d'un écran) à


l’autre :
!
• une action de l’utilisateur, bouton, menu ou l’application
fait aller sur l’écran suivant
• le bouton back ramène sur l’écran précédent.
!35
!36
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : Activity
• Chaque écran est géré par une instance d’une sous-classe de Activity ou
d’une classe dérivée de Activity (par exemple, AppCompatActivity qui
représente un type spécifique d'activité permettant d'utiliser les
fonctionnalités de la barre d'actions, ListActivity pour l'utilisation des listes,
etc.)
• On surcharge certaines méthodes qui sont appelées par Android pour
définir le comportement. Principalement, la méthode onCreate qui définit
entre autres, ce qui doit être affiché sur l’écran.

• Une activité est constituée du contexte


de l'application et d'une seule et unique
interface graphique
!37
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : Activity

fait appel au onCreate une nouvelle classe


de la classe Activity dériver de Activity

public class Mon2Activity extends Activity {


!
redéfinir une @Override
méthode protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
existante setContentView(R.layout.activity_mon2);

} le paramètre de type Bundle :


}
!
spécifie l’identifiant de l’interface à • Premier lancement/démarrage (quittée
afficher dans l’écran. C’est un normalement)=null.
entier, identifiant d’une disposition • Sinon <> null si on sauvegarde des
de vues : un layout. données dedans (ce qui doit être créé à
chaque démarrage, en particulier IHM)
!38
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : Activity

class Mo2nActivity : Activity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_mon2)
}
}
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : La classe R

• Le SDK Android gère une classe statique


appelée R.Java.

• Chaque ressource présente dans le dossier


res du projet génère un identifiant unique
dans le fichier R pour permettre de les
récupérer dans la partie Java/Kotlin de
l'application.

!39
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : La classe R

public static final class layout {


public static final int activity_main=0x7f09001b;
public static final int activity_mon2=0x7f09001c;

public static final class mipmap {


public static final int ic_launcher=0x7f0a0000;
public static final int ic_launcher_round=0x7f0a0001;
public static final int tp=0x7f0a0002;
}

Cette classe contient un unique public, static et final int. Il s'agit par
conséquent d'une constante, à laquelle n'importe quelle autre classe peut
accéder sans avoir à créer d'objet de type R ni de type layout par exemple.

!40
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources :
interface par programme vs programme et ressources
• Il est possible de créer une interface par programme (java/kotlin
uniquement)

• Cependant, cela est assez compliqué et ne respecte pas le MVC


!41
!42
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources :
interface par programme vs programme et ressources
• Il est donc préférable de stocker l’interface dans un fichier XML (res/
layout/)
• Il sera référencé par son identifiant (R.layout.) dans le programme Java/Kotlin

• On peut même séparer les ressources de type chaînes dans res/values/


strings.xml, au lieu de les mettre en constantes dans le source
<resources>
<string name="app_name">TP0</string>
<string name="b1">Passez vers 2eme écran</string>
<string name="b2">Revenir au 1er écran</string>
</resources>
<Button
android:id="@+id/b1"
Button b1=(Button) findViewById(R.id.b1); android:layout_width="wrap_content"
android:layout_height="wrap_content"
b1.setText(R.string.b1);
android:text="@string/b1"
/>
!43
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources :
interface par programme vs programme et ressources

• Lorsque les textes sont définis dans res/values/strings.xml, il suffit de faire


des copies du dossier values, en values-fr, values-es, etc. et de traduire les
textes en gardant les attributs name.
<resources>
<string name="app_name">TP0</string>
<string name="b1">Passez vers 2eme écran</string>
<string name="b2">Revenir au 1er écran</string>
</resources>
<resources>
<string name="app_name">TP0</string>
<string name="b1">Go to 2nd screen</string>
<string name="b2">Return to the 1st screen</string>
</resources>

• Le système android ira chercher automatiquement le bon texte en


fonction des paramètres linguistiques configurés par l’utilisateur
!44
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Identifiants

• Il y a les deux notations pour identifier une vue :


• @id/nom pour référencer un identifiant défini ailleurs
• @+id/nom pour créer cet identifiant

<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text"
/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/b2"
android:layout_below="@id/txt"
/>
!45
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Identifiants

• De la même façon, les images PNG placées dans res/drawable et res/


mipmaps-* sont référençables

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/tp"/>

• Les dossiers res/mipmaps-* contiennent la même image à des définitions


différentes, pour correspondre à différents téléphones et tablettes. Ex:
mipmap-hdpi contient des icônes en 72x72 pixels (new -> Image Asset)
!46
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
!47
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues

• Android propose un grand nombre de vues. Beaucoup ont des variantes


(saisie de texte : numéro de téléphone ou adresse ou texte avec suggestion
ou . . .)

• Les vues évoluent avec les versions


d’Android, certaines changent, d’autres
disparaissent.

• Chaque widget possède un nombre


important d'attributs XML et de méthodes
Java/Kotlin.
!48
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues TextView

• Permet d'afficher une chaîne de caractères que l'utilisateur ne peut pas


modifier
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text"
android:textColor="@color/colorPrimary"/>

• On peut le changer dynamiquement en Java/Kotlin

TextView tv=(TextView) findViewById(R.id.txt);


tv.setText("Ok Ok");

var tv=findViewById<TextView>(R.id.txt) as TextView


tv.setText("No No")
!49
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues TextView


!50
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues EditText

• Permet à l'utilisateur d'écrire des textes. C’est un TextView éditable.


• Il hérite de TextView, ce qui signifie qu'il peut prendre les mêmes attributs
que TextView en XML et qu'on peut utiliser les mêmes méthodes Java/
Kotlin.
<EditText
android:id="@+id/et"
android:hint affiche un texte android:layout_width="wrap_content"
d'indication (pas pris en android:layout_height="wrap_content"
android:hint="Exemple"
compte par l'EditText en tant
android:inputType="textMultiLine"
que valeur) android:lines="5"
/>

EditText et=(EditText)findViewById(R.id.et);
String name= et.getText().toString();
!51
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues Button

• Un simple bouton, il s'agit en fait d'un TextView cliquable (hérite de


TextView)
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/b1"
/>

Button b1=(Button) findViewById(R.id.b1);


b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//code
}
});
!52
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues CheckBox

• Une case qui peut être dans deux états : cochée ou pas (hérite de Button)

<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Oui"
android:checked="true" />

checkBox.setChecked(true); checkBox.isChecked = true


if(checkBox.isChecked()){} if (checkBox.isChecked) { }
!53
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues RadioButton et RadioGroup

• Même principe que la CheckBox, à la différence que l'utilisateur ne peut


cocher qu'une seule case. Il est plutôt recommandé de les regrouper dans
un RadioGroup.

<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"/>
</RadioGroup>
!54
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues ImageView

• Permet d'afficher les ressources image, par exemple les ressources Bitmap
ou Drawable.

<ImageView
android:id="@+id/monIm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
/>

• On peut le changer dynamiquement en Java/Kotlin

ImageView im=(ImageView) findViewById(R.id.monIm);


im.setVisibility(View.VISIBLE);

im.setVisibility(View.INVISIBLE); im.setImageResource(R.drawable.icon);
!55
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues ImageView

ImageView im=(ImageView) findViewById(R.id.monIm);


im.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MonActivity.this,"Hi!", Toast.LENGTH_SHORT).show();
}
});

ImageView vs ImageButton ?

ImageButton a un arrière-plan non nul par défaut.


!56
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues Et encore beaucoup …

• Comment chercher dans la documentation d’Android ?

• Chercher par exemple comment faire pour changer la couleur du texte


pour TextView :
!
• http://developer.android.com/
!
• Insérer le nom TextView dans un champ de recherche en haut à
gauche.
!
• Une liste s'affiche et permet de sélectionner la classe
correspondante
!57
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues Et encore beaucoup …


!58
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues Et encore beaucoup …


Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Vues Et encore beaucoup …

Autres méthodes ?

!59
!60
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Styles

• Un style permet de modifier l’apparence d’une vue :


!
• Police de caractères et tailles pour les textes, couleurs, etc.
• Géométrie par défaut des vues : taille, espacement, remplissage. . .

• Pour définir un style il faut créer un fichier XML dans res/value

identification
le rattache à un <resources> du style
autre pour héritage <style name="Monstyle"
des propriétés non parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">#010101</item>
définies ici <item name="android:typeface">serif</item>
</style>
</resources>
Police
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Styles


<TextView
• Pour utiliser un style : style="@style/Monstyle"
android:text="@string/titre" />

• Un thème est un style appliqué à toute une application (il faut le spécifier
dans le fichier AndroidManifest.xml )

<application
android:allowBackup="true"
android:icon="@mipmap/tp"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
android:theme="@style/Monstyle">

!61
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Quelle est la différence entre Activity et AppCompatActivity ?

AppCompatActivity fournit un support ActionBar natif qui est cohérent dans


toute l'application.

android:hint="Exemple" ?
<EditText
android:hint affiche un texte android:layout_width="wrap_content"
android:layout_height="wrap_content"
d'indication (pas pris en
android:hint="Exemple"
compte par l'EditText en tant android:inputType="textMultiLine"
que valeur) android:lines="5"
/>

!62
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Quelle est la différence entre @id/nom et @+id/nom?

• Il y a les deux notations pour identifier une vue :


• @id/nom pour référencer un identifiant défini ailleurs
• @+id/nom pour créer cet identifiant

La classe R contient quoi ?

Chaque ressource présente dans le dossier res du projet génère un


identifiant unique dans le fichier R pour permettre de les récupérer
dans la partie Java/Kotlin de l'application.

!63
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Quelle est la signification de « ADB » ?

Android Debug Bridge

Comment garantir l’internationalisation de vos app ?

• Lorsque les textes sont définis dans res/values/strings.xml, il suffit de faire


des copies du dossier values, en values-fr, values-es, etc. et de traduire les
textes en gardant les attributs name.

!64
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Comment vérifier si un « CheckBox » a été cliqué ?

if(checkBox.isChecked()){}

Quelle est la différence entre un Style et un Thème ?

Un thème est un style appliqué à toute une application

Quel est l’attribut qui permet de spécifier le type d’entré dans un EditText ?

android:inputType

!65
!67
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
!68
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition


Les vues sont alignées à l’aide de groupes sous-classes de ViewGroup tel
que :

• LinearLayout
!
• RelativeLayout
!
• TableLayout
!
• GridLayout
!
• FrameLayout
!
• ScrollView
!69
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition

La plupart des groupes utilisent des paramètres de placement sous forme


d’attributs XML. Ces paramètres sont de deux sortes :
!
• ceux qui sont demandés pour toutes les vues : android:layout_width et
android:layout_height
!
• ceux qui sont demandés par le groupe englobant et qui en sont spécifiques,
comme android:layout_weight, android:layout_alignParentBottom,
android:layout_centerInParent.
!70
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition

Paramètres généraux

Toutes les vues doivent spécifier ces deux attributs :


!
✓ android:layout_width : largeur de la vue
✓ android:layout_height : hauteur de la vue

Ils peuvent valoir :


!
• "wrap_content" : la vue est la plus petite possible
• "match_parent" : la vue est la plus grande possible
• "valeurdp" : une taille fixe, ex : "100dp" (mais c’est pas recommandé)
!71
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition

Paramètres généraux

• Les dp (Density independen Pixel - Densité de pixels indépendant) sont


une unité de taille indépendante de l’écran.

• 1dp est équivalent à un pixel physique sur un écran de 160 dpi (Dots Per
Inch - définit le nombre d'informations constituant une ligne d'un pouce) qui
est la densité de base prise en charge par le système pour un écran de
densité "moyenne".

• Lors de l'exécution, le système gère de manière transparente toute mise à


l'échelle des unités dp, en fonction de la densité réelle de l'écran utilisé. La
conversion des unités dp en pixels est simple:

px = dp * (dpi / 160)
!72
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition

Paramètres généraux

• Par exemple, sur un écran de 240 dpi, 1 dp équivaut à combien de pixels


physiques ?

px = dp * (dpi / 160)
px = 1 * (240 / 160)
px = 1,5
!73
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition

Paramètres généraux

px = dp * (dpi / 160)
!74
Développement d’applications mobiles sous Android
‣ Bases d’une application Android
Interface et Ressources : Disposition
Autres paramètres géométriques
Il est possible de modifier l’espacement des vues :
!
• Padding espace entre le texte et les bords, géré par chaque vue
• Margin espace autour des bords, géré par les groupes
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition LinearLayout

• LinearLayout : positionne ses vues en ligne ou colonne

Ce layout se charge de mettre les vues sur une même ligne, selon une certaine
orientation. L'attribut pour préciser cette orientation est android:orientation.
On peut lui donner deux valeurs :
• vertical pour que les composants soient placés de haut en bas (en
colonne)
• horizontal pour que les composants soient placés de gauche à droite (en
ligne).

!75
!76
Développement d’applications mobiles sous Android
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="50dp"
>
!
<LinearLayout
! android:layout_width="match_parent"
! android:layout_height="wrap_content"
! android:orientation="horizontal"
! android:layout_margin="50dp">
! <TextView
! android:id="@+id/txt2"
! android:layout_width="wrap_content"
! android:layout_height="wrap_content"
! android:text="Exemple"
! android:textColor="@color/colorPrimary"
! android:layout_marginRight="10dp"/>
! <Button
! android:id="@+id/b1"
! android:layout_width="wrap_content"
! android:layout_height="wrap_content"
! android:text="OK"
! />
!
</LinearLayout>
!
<ImageView
! android:id="@+id/im1"
! android:layout_width="wrap_content"
! android:layout_height="wrap_content"
! android:src="@drawable/tchina"
! />
</LinearLayout>
<LinearLayout !77
android:orientation= "horizontal"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
>
<TextView
android:text= "red"
android:gravity= "center_horizontal"
android:background= "#aa0000"
android:layout_width= "wrap_content"
android:layout_height= "match_parent"
android:layout_weight= "1"
/>
<TextView
android:text= "green"
android:gravity= "center_horizontal"
android:background= "#00aa00"
android:layout_width= "wrap_content"
android:layout_height= "match_parent"
android:layout_weight= "1"
/>
<TextView
android:text= "blue"
android:gravity= "center_horizontal"
android:background= "#0000aa"
android:layout_width= "wrap_content"
android:layout_height= "match_parent"
android:layout_weight= "1"
/>
<TextView
android:text= "yellow"
android:gravity= "center_horizontal"
android:background= "#aaaa00"
android:layout_width= "wrap_content"
android:layout_height= "match_parent"
android:layout_weight= "1"
/>
</LinearLayout>
!78
Développement d’applications mobiles sous Android
‣ Bases d’une application Android

Interface et Ressources : Disposition LinearLayout

Layout Weight :

• LinearLayout peut prendre en charge l'attribution d'un poids à des enfants


individuels avec l'attribut android: layout_weight.
• Cet attribut assigne une valeur «  d’importance  » à une vue en termes
d'espace qu'elle devrait occuper sur l'écran. Une valeur de poids plus élevée
lui permet de se développer pour remplir tout espace restant dans la vue
parente.
• Si on a trois champs et un d'entre eux reçoit un poids de 2 (les autres 0),
alors il est déclaré plus important que les deux autres, ainsi il reçoit la moitié
de l'espace total restant, tandis que les deux autres partagent le reste.
• Le poids par défaut est zéro.
Développement d’applications mobiles sous Android

‣ Bases d’une application Android

Interface et Ressources : Disposition LinearLayout

De manière générale, c'est pas recommander d'empiler beaucoup


de LinearLayout (avoir un LinearLayout dans un LinearLayout,
dans un LinearLayout, etc.), c'est mauvais pour les performances
d'une application.

!79

Vous aimerez peut-être aussi