-
Tour d’horizon du milieu du mobile
-
Historique d’Android
-
Spécificités du développement mobile
-
Eco-système
-
Votre IDE gère la complexité à votre place
-
Ant avec Eclipse
-
Gradle avec Android Studio
-
-
Génération du fichier R
-
Compilation des fichiers Java
-
Compilation dex
-
packaging sous forme d’un apk
-
Le SDK Manager permet de mettre à jour et d’installer des fonctionnalités supplémentaires
-
Il fournit les outils utilisés pour le développement:
-
ADB (Android Debug Bridge)
-
transfert de fichiers
-
accès shell
-
intallation d’applications
-
debug
-
-
dx
-
apkbuilder
-
-
Les interfaces sont définies dans des fichiers XML
-
On y accède depuis notre code via le Context
-
Seul le code qui a instancié l’interface y a accès
Caution
|
L’API n’est pas tout à fait celle de Java, pas accès à Jaxb, classes redéfinies (Color par exemple). |
-
Fichier généré par le système
-
Dans le dossier gen et ajouté au classpath
-
⇒ autocomplétion
-
-
Pointeur vers vos ressources
-
fichiers XML depuis Java
-
images
-
-
Les ressources sont alors dans le Context
-
un identifiant par ressource
-
tableau indexé
-
-
Pour y accéder
-
getResources() + get "typé"
-
R.type.maResource
-
String title = context.getString(R.string.title)
Color color = context.getResources().getColor(R.color.title)
-
Certaines méthodes prennent directement les id
-
ex : setText(R.string.monTexte)
-
-
Hierarchie bien plus complexe, ne pas hésiter à redescendre dans la hiérarchie, il y a des chances que la classe que vous cherchez à créer existe déjà.
-
Inflate :
-
XML ⇒ Java
-
-
Deux types de vue :
-
Affichage
-
Conteneurs
-
-
Un des mécanisme de gestion du multi-écrans
-
N’ont pas d’affichage propre, juste des limites
-
Servent à positionner des vues placées dedans
-
Chaque conteneur a sa règle de positionnement
-
Les maîtriser toutes c’est pouvoir faire une infinité d’interfaces
-
-
ScrollView
-
conteneur pour rendre un contenu plus large que l’écran scrollable
-
-
FrameView
-
conteneur d’une seule vue
-
-
GridView et GridLayout
-
GridLayout ⇒ nouvelle version
-
Mise en forme de type formulaire
-
-
TableLayout
-
Mise en forme type Table HTML
-
TableRow
-
-
Affichent du contenu
-
Callback de mesure
-
Callback de layout
-
Callback de dessin
-
-
Gèrent les entrées utilisateur
-
avec les listeners
-
setOnClickListener
-
setOnLongPressListener
-
-
ImageView, ImageButton
-
src
-
scaleType
-
penser à gérer son cache
-
-
MediaController
-
Des boutons simples de contrôle de la musique
-
-
VideoView
-
Afficher une vidéo par le système
-
-
SurfaceView, GLSurfaceView et TextureView
-
Conteneur pour afficher un contenu web
-
Encapsule WebKit ou Chromium
-
Pour mettre du contenu
-
ouvrir une page
-
intégrer du code
-
-
Avec IntelliJ dans l’éditeur
-
C’est déjà pas si mal
-
-
Sous Eclipse
-
Attention au codé généré
-
Lourd pour de grosses interfaces
-
-
Le plus sûr reste de bien connaître et le faire à la main
-
En Java :
-
On instancie les objets correspondant au runtime
-
On doit tout gérer tout seul
-
-
En XML :
-
Descriptions XML
-
Editeur graphique
-
-
Le meilleur des deux mondes :
-
On conçoit rapidement en WYSIWYG
-
On peauffine le code XML produit
-
On rajoute les comportements en Java
-
-
Les vues peuvent avoir une seule vue parente
-
Les ViewGroup peuvent contenir plusieurs vues
-
On les imbrique pour former l’IHM de l’application
-
Dans le dossier res
-
sous dossier layout
-
structure de dossier à voir plus tard
-
-
Structuration
-
Une vue == une balise
-
Un champs == un attribut
-
layout_width et layout_height obligatoires
-
un id pour pouvoir récupérer vos vues
-
-
Instancié ensuite par le système
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a Button" />
</LinearLayout>
-
On instancie le layout
-
appliquer votre layout à votre activity
-
avec setContentView(R.layout.mon_layout)
-
-
On récupère l’instance java de nos vues
-
findViewById depuis une activity ou une vue
-
-
On peut alors manipuler les vues
-
tester les getters/setters
-
-
On peut ajouter des écouteurs d’actions
-
mButton.setOnClickListener(myOCL)
-
-
Accéder aux autres vues en xml
-
@id/id_res ⇒ référence
-
@+id/id_res ⇒ crée si n’existe pas et référence
-
-
Faire un findViewById le moins souvent possible
-
Généralement au onCreate ou onCreateView
-
-
Unité de mesure : le density pixel (dp)
-
s’affranchir des variations de densités de pixels
-
résultat de taille "réelle" cohérent
-