Android, A Complete Course, From Basics to Enterprise Edition

Premiers pas avec Android.

Android, A Complete Course, From Basics to Enterprise Edition. 1

Premiers pas avec Android. 1

Premiers pas avec Android. 1

1       Notions fondamentales. 1

1.1         Une application Android. 1

1.2         La structure d’un projet. 2

 

Cet article est extraie du livre « Android, A Complete Course », disponible sur Android2ee.com.

Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ce code est libre de toute utilisation mais n'est pas distribuable.

La distribution du code est reservée au site :

http://android2ee.com.

La propriété intellectuelle du code appartient à :

Mathias Séguy

L’utilisation de ces codes est sous votre unique responsabilité et personne d’autre que vous ne pourra être tenu responsable des préjudices ou dommages de quelques natures que ce soit pouvant résulter de son utilisation.

Tous les noms de produits ou marques cités dans cet ouvrage sont des marques déposés par leurs propriétaires respectifs.

Publié par http://android2ee.com

Titre Original : Android, A Complete Course, From Basics to Enterprise Edition. Édition Française.

ISBN : 979-10-90388-00-0

Copyright © 2011 by Mathias Séguy

 

Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2° et 3° a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Mathias Seguy ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code

Premiers pas avec Android

Avant d’expliquer les interfaces graphiques, nous présentons de manière succincte les notions fondamentales d’une application Android.

1         Notions fondamentales

1.1       Une application Android

Avant tout, il faut avoir en tête le principe de base de la programmation Android et ses composants principaux. Il y a quatre types d’éléments distincts :

·         Les activités (activities) : Ce sont les programmes qui sont une activité pour l’utilisateur. Ils possèdent donc un GUI.

·         Les fournisseurs de contenus (content provider) : Ils offrent un niveau d’abstraction pour l’accès à toutes les données stockées sur le terminal. Il est encouragé d’ouvrir ces données aux autres applications. Les données sont identifiées au moyen d’URI (Unified Ressources Identifier).

·         Les services : Les services ont une durée de vie infinie (contrairement aux activités et aux fournisseurs de données). Il faut les voir comme des démons qui tournent en tâche de fond.

·         Les intentions (intents) : Ce sont des messages systèmes qui servent de support événementiel pour permettre le dialogue entre applications. On répond et on envoie des intentions qui lancent ou communiquent avec les activités.

Service

ContentProvider

URI

Intent

BroadCastReceiver

Activity

Send

StartActivity

Listen

CRUD operation return

Find ContentProvider

ContentResolver.action(URI,…)

Bind

Listen

Une activité envoie des Intents au système qui identifie l’activité associée et soit la lance (startActivity) soit lui parle au moyen du BroadCastReceiver. Un BroadCastReceiver est une interface qui est implémentée par l’activité écoutante.

Une activité se lie à un service par la méthode Bind et soit interagit directement avec les méthodes du service, soit écoute les évènements envoyés par celui-ci.

Une activité peut demander, via un ContentResolver, au système à effectuer une action CRUD sur des données identifiées par une URI. Le système trouve le ContentProvider qui gère ses données et lui demande d’effectuer l’action demandée. Le résultat de l’action est renvoyé à l’activité. Un service peut aussi utiliser ce mécanisme pour effectuer des actions CRUD sur des données.

 

1.2       La structure d’un projet

Un projet possède la structure normalisée. Il y a deux types de fichiers, ceux que vous utilisez tous le temps et ceux qui ne sont là que pour la compilation et le déploiement.

Les fichiers utilisés en permanence :

·         Le manifeste (AndroidManifest.xml) qui décrit l’application à construire et ses composants,

·         Le dossier res (pour ressources) qui contient les ressources du projet (les layouts, les chaînes de caractères, les images, les fichiers internes, les fichiers XML, les couleurs et thèmes) dont les sous-dossiers sont :

o   Drawable (pour les images, usuellement vous trouverez trois dossiers, un par qualité Haute, moyenne, faible)

o   Layout (pour la définition des différents fichiers de layouts des activités qui déclarent et positionnent les composants graphiques)

o   Values (pour les chaînes de caractères, les couleurs, les thèmes, les préférences…)

o   Raw (pour les fichiers)

o   XML (pour les fichiers xml)

·         Le dossier src pour les sources,

·         Et enfin le dossier test pour les tests.

Les fichiers utilisés pour la compilation et le déploiement :

·         Le fichier de build ant (build.xml)  qui construit le projet ou son homologue maven,

·         Les fichiers properties default et local qui sont utilisé par le build,

·         Le dossier asset contient des fichiers pour le déploiement,

·         Le dossier bin (pour binaries) qui contient les classes compilées,

·         Le dossier gen (pour generated) qui contient le code source généré par les outils de compilation Android,

·         Le dossier libs (pour Librairies) qui contient les librairies

Le fichier manifeste est un élément clef du projet, il définit :

·         Votre projet et sera interprété par le système et l’AndroidStore,

·         Les dépendances systèmes de votre projet (par exemple : la version du système, les instruments nécessaires, la  géo-localisation),

·         la version de votre projet (un nom de version name et un numéro de version (un Int)),

·         les différents composants de votre application (Activity, Service, ContentProvider).

Comme Android a pour vocation de lancer votre application sur un ensemble d’appareils distincts, il est préconisé que vous mettiez en place l’arbre suivant au niveau de vos ressources :

·         layout

·         layout-small

·         layout-normal

·         layout-large

·         layout-xlarge

·         drawable

·         drawable-ldpi

·         drawable-mdpi

·         drawable-hdpi

·         values

·         values-fr || values-en (si vos String par défaut sont en anglais, mettez values-fr sinon values-en)

Cet arbre vous permet d’avoir les layouts par défaut puis ceux spécifiques à chaque taille d’écran, vos images par défaut puis celles spécifiques à chaque densité d’écran et enfin vos chaînes de caractères par défaut puis celles anglaises (ou française si par défaut vos chaînes sont anglaises).

Il faut toujours mettre le dossier par défaut car personne ne sait si lors de futures versions d’Android de nouveaux paramètres n’apparaitront pas (xlarge est apparu à la version 9 du système).