polycop android

Upload: julien-heurtebize

Post on 18-Jul-2015

1.271 views

Category:

Documents


0 download

TRANSCRIPT

Dveloppement d'applications pour Android

M. Dalmau, IUT de Bayonne-Pays Basque

NOTE Ce manuel n'a pas la prtention d'tre exhaustif, il ne prsente que quelques classes de l'API Android (les plus utilises). De mme pour les classes dcrites seules les mthodes les plus utilises le sont. SOURCE DU CODE ANDROID Il est accessible sur : http://source.android.com/source/index.html DOCUMENTATION Pour une documentation complte d'Android on se reportera au site : http://developer.android.com L'onglet "Reference" contient la documentation en ligne des classes de l'API. La case cocher et la liste droulante en haut droite permettent de limiter cette documentation une version prcise de l'API. L'onglet "Dev Guide" propose des aides pour le dveloppement. L'onglet "Resources" propose des aides et des exemples d'utilisation des classes de l'API. D'autres tutoriels sont disponibles sur : http://www.ace-art.fr/wordpress/tag/android/ et sur bien d'autres sites (attention : certains se contentent de donner des "trucs et astuces" sans explications et parfois mme pas trs bien matriss par leurs auteurs !). Un forum trs actif est celui de : http://stackoverflow.com Un manuel intitul "Dvelopper des applications mobiles pour les Google Phones" crit par F. Garin et publi chez Dunod (EAN13 : 9782100531813) peut tre tlcharg en pdf sur : http://kslimi.files.wordpress.com/2011/01/dunod-android.pdf Le livre "Programmation Android De la conception au dploiement avec le SDK Google Android 2" de D. Guignard, J Chable, E. Robles aux ditions Eyrolles (ISBN : 978-2-212-12587-0) a galement t utilis pour rdiger ce document.

SommaireNotion d'activit ......................................................................................................................... 1 Cycle de vie d'une application Android (activit). ................................................................. 1 Mthodes de la classe Activity............................................................................................... 2 Mthodes correspondant au cycle de vie............................................................................ 2 Mthodes relatives l'interface .......................................................................................... 2 Mthodes relatives aux menus et menus contextuels......................................................... 2 Mthodes relatives l'environnement et aux ressources.................................................... 3 Mthodes de lancement d'activits et de services .............................................................. 3 Manifeste .................................................................................................................................... 3 Activits ................................................................................................................................. 4 Permissions............................................................................................................................. 5 Ressources .................................................................................................................................. 6 Rpertoires des ressources ..................................................................................................... 6 Classe de rfrencement des ressources (classe R) ................................................................ 6 Ressources de type valeurs..................................................................................................... 6 Utilisation de ressources......................................................................................................... 7 Rfrencement dune ressource dans un fichier XML....................................................... 7 Rcupration dune ressource dans le code (la classe Resources) ..................................... 7 Uri............................................................................................................................................... 7 Ressource sur Internet ............................................................................................................ 7 Ressource locale ..................................................................................................................... 8 Fichiers et rpertoires sur Android............................................................................................. 8 Rpertoires d'Android ............................................................................................................ 8 La classe File .......................................................................................................................... 8 Mthodes de la classe File.................................................................................................. 8 Lecture/criture dans un fichier.......................................................................................... 9 Interfaces .................................................................................................................................. 10 Mise en place d'une interface ............................................................................................... 10 Hirarchie (partielle) des classes pour les interfaces............................................................ 11 Proprits et classes de base des interfaces .......................................................................... 12 Les units.......................................................................................................................... 12 Les couleurs...................................................................................................................... 12 La classe View ................................................................................................................. 12 La classe ViewGroup ....................................................................................................... 14 Evnements traits par les classes de base des interfaces .................................................... 15 L'interface OnClickListener ............................................................................................. 15 L'interface OnLongClickListener..................................................................................... 15 L'interface OnKeyListener ............................................................................................... 15 La classe KeyEvent .......................................................................................................... 16 L'interface OnTouchListener............................................................................................ 16 La classe MotionEvent ..................................................................................................... 16 Les conteneurs...................................................................................................................... 16 La classe FrameLayout..................................................................................................... 16 La classe LinearLayout .................................................................................................... 17 La classe AbsoluteLayout ................................................................................................ 17 Les classe ScrollView et HorizontalScrollView .............................................................. 18 La classe TableLayout...................................................................................................... 18 La classe RelativeLayout ................................................................................................. 19

Les groupes .......................................................................................................................... 20 RadioGroup ...................................................................................................................... 20 ListView ........................................................................................................................... 21 GridView .......................................................................................................................... 23 Gallery.............................................................................................................................. 25 Les composants d'interface................................................................................................... 28 ImageView ....................................................................................................................... 29 TextView.......................................................................................................................... 30 EditText............................................................................................................................ 33 AutoCompleteTextView .................................................................................................. 34 Button ............................................................................................................................... 34 ImageButton ..................................................................................................................... 35 ToggleButton.................................................................................................................... 35 CheckBox ......................................................................................................................... 36 RadioButton ..................................................................................................................... 36 Spinner ............................................................................................................................. 36 DatePicker ........................................................................................................................ 37 TimePicker ....................................................................................................................... 38 ProgressBar ...................................................................................................................... 39 SeekBar ............................................................................................................................ 40 RatingBar ......................................................................................................................... 40 AnalogClock..................................................................................................................... 41 DigitalClock ..................................................................................................................... 41 Chronometer..................................................................................................................... 42 Notifications ......................................................................................................................... 42 La classe Toast ................................................................................................................. 42 Textes Formats ....................................................................................................................... 43 Cration d'un texte format : ................................................................................................ 43 Application de formats : ....................................................................................................... 43 Couleurs et Images ................................................................................................................... 44 La classe Color d'Android .................................................................................................... 44 Mthodes de la classe Color............................................................................................. 44 Couleurs prdfinies......................................................................................................... 44 La classe Drawable............................................................................................................... 44 Les menus................................................................................................................................. 44 Description en XML d'un menu ........................................................................................... 44 Menu gnral........................................................................................................................ 45 Cration du menu ............................................................................................................. 45 Ractions aux choix ......................................................................................................... 45 Menus contextuels................................................................................................................ 45 Association ....................................................................................................................... 45 Cration du menu contextuel............................................................................................ 46 Ractions aux choix ......................................................................................................... 46 Communication entre activits................................................................................................. 46 Filtres d'intensions................................................................................................................ 46 Forme gnrale ................................................................................................................. 46 Lancer une activit ............................................................................................................... 47 Sans attente de rponse .................................................................................................... 47 Avec attente de rponse.................................................................................................... 47 Passage de paramtres et de valeurs de retour ..................................................................... 48

Le matriel et les capteurs ........................................................................................................ 48 Envoi d'un SMS.................................................................................................................... 48 Utilisation du GPS................................................................................................................ 48 Appareil photo...................................................................................................................... 49 Accs l'appareil photo.................................................................................................... 49 Prvisualisation ................................................................................................................ 49 Prise de photo ................................................................................................................... 50 Affichage de photo ........................................................................................................... 50 Vibreur ................................................................................................................................. 51 Capteurs................................................................................................................................ 51 Le multimdia .......................................................................................................................... 52 Jouer un son.......................................................................................................................... 52 La classe MediaPlayer...................................................................................................... 53 Afficher une video................................................................................................................ 53 La classe VideoView........................................................................................................ 54 Synthse de parole................................................................................................................ 54 Internet ..................................................................................................................................... 55 Rcuprer un fichier texte depuis une URL ......................................................................... 55 Rcuprer une image depuis une URL................................................................................. 56 Jouer un son depuis une URL .............................................................................................. 56 Jouer une vido depuis une URL ......................................................................................... 56 Utiliser des services WEB........................................................................................................ 56 Trouver les coordonnes gographiques de lieux ................................................................ 56 La classe Geocoder........................................................................................................... 57 La classe Address ............................................................................................................. 57 Exemple :.......................................................................................................................... 57 GoogleMaps ......................................................................................................................... 58 Prparation du projet ........................................................................................................ 58 Cl d'utilisation................................................................................................................. 58 Afficher des cartes dans une application.......................................................................... 58

Notion d'activitCycle de vie d'une application Android (activit).A chaque tape du cycle de vie correspond l'appel d'une mthode que l'on peut surcharger pour dfinir le comportement correspondant cette tape.

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

1

Mthodes de la classe Activityimport android.app.Activity

Mthodes correspondant au cycle de vieLes mthodes onXxx sont appeles au cours du cycle de vie. Si elles sont surcharges elles doivent faire appel leur homologue de la classe suprieure (super.onXxx). Voir schma du cycle de vie d'une activit ci-dessus. onCreate(Bundle) appele la cration. Le paramtre permet de rcuprer un tat sauvegard lors de l'arrt de l'activit (si on a fait une sauvegarde) onPause()appele quand l'activit n'est plus en premier plan onDestroy()appele quand l'activit se termine onStart()appele quand l'activit dmarre onRestart()appele quand l'activit redmarre onStop()appele quand l'activit n'est plus visible onResume()appele quand l'activit vient en premier plan finish() permet de terminer une activit

Mthodes relatives l'interface setContentView(int) permet de crer l'interface depuis un fichier XML, le paramtre dsigne ce fichier par son identifiant findViewById(int) rcupration d'un lment d'interface (renvoie un objet de classe View) , le paramtre dsigne cet lment par son identifiant (normalement dfini dans la classe R) showDialog(int) ouverture d'une fentre de dialogue. Le paramtre dsigne la fentre de dialogue par son identifiant showDialog(int, Bundle) ouverture d'une fentre de dialogue. Le 1er paramtre dsigne la fentre de dialogue par son identifiant, le second permet de lui passer des paramtres dismissDialog(int) fermeture d'une fentre de dialogue dsigne par son identifiant onCreateDialog(int, Bundle) appele lors de l'ouverture d'une fentre de dialogue. Le 1er paramtre est l'identifiant de la fentre de dialogue, le second est celui qui avait t pass lors de l'appel de showDialog onPrepareDialog(int, Bundle) appele lors de l'activation d'une fentre de dialogue dj ouverte. Le 1er paramtre est l'identifiant de la fentre de dialogue, le second est celui qui avait t pass lors de l'appel de showDialog getCurrentFocus() renvoie l'lment de l'interface (objet de classe View) ayant actuellement le focus

Mthodes relatives aux menus et menus contextuels onCreateOptionsMenu(Menu) appele lorsqu'un menu de l'activit est affich. Le paramtre est le menu affich. onOptionsItemSelected(MenuItem) appele lors d'un choix dans un menu de l'activit. Le paramtre est le choix effectu. onOptionsMenuClosed(Menu) appele lors de la fermeture d'un menu de l'activit. Le paramtre est le menu ferm. registerForContextMenu(View) associe un menu contextuel l'lment pass en paramtre unregisterForContextMenu(View) supprime l'association du menu contextuel l'lment pass en paramtre onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo) appele lorsqu'un menu contextuel est affich. Le 1er paramtre est ce menu contextuel, le 2me est l'lment d'interface auquel il est associ, le dernier donne des informations sur le contenu de l'lment d'interface qui a caus l'apparition du menu contextuel onContextItemSelected(MenuItem) appele lors d'un choix dans un menu contextuel. Le paramtre est le choix effectu. onContextMenuClosed(ContextMenu) appele lors de la fermeture d'un menu contextuel. Le paramtre est le menu ferm.

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

2

Mthodes relatives l'environnement et aux ressources getResources() renvoie un objet de classe Resources permettant l'accs aux ressources de l'applicaction (voir plus loin la classe Resources) onUserInteraction()appele chaque interaction de l'utilisateur (clavier, trackball, touch) onBackPressed()appele lorsque l'utilisateur appuie la touche de retour arrire du tlphone onLowMemory()appele lorsque le niveau de batterie devient faible getFilesDir() renvoie un objet de classe File reprsentant le chemin o sont placs les fichiers propres l'application openFileInput(String) renvoie un objet de classe FileInputStream correspondant un flux de lecture connect au fichier dont le nom est pass en paramtre. openFileOutput(String, int) renvoie un objet de classe FileOutputStream correspondant un flux d'criture connect au fichier dont le nom est pass en premier paramtre. Le second paramtre est le mode d'ouverture qui peut tre : MODE_PRIVATE (mode normal), MODE_APPEND (ajout un fichier existant), MODE_WORLD_READABLE et MODE_WORLD_WRITEABLE (pour les droits d'accs). On peut cumuler plusieurs attributs par |

Mthodes de lancement d'activits et de services startActivity(Intent) Lance une autre activit, le paramtre dsigne l'activit ou les proprits permettant Android de l'identifier. startActivityForResult(Intent, int) Lance une autre activit dont on attend un retour, le 1er paramtre dsigne l'activit ou les proprits permettant Android de l'identifier, le second paramtre est un numro associ cette activit qui permettra d'en identifier la rponse. startNextMatchingActivity(Intent) Utilis pour demander Android de lancer une autre activit lorsque celle propose prcdemment n'a pas donn satisfaction. Le paramtre correspond celui qui a donn un rsultat infructueux. finishActivity(int) Termine une activit dont on attendait un retour, le paramtre est le numro associ cette activit lors de son lancement startService(Intent) Lance un service, le paramtre dsigne le service ou les proprits permettant Android de l'identifier stopService(Intent) Arrte un service, le paramtre dsigne le service ou les proprits permettant Android de l'identifier getIntent() renvoie l'objet de classe Intent associ l'activit lors de son lancement setResult(int) Utilis par l'activite appele pour renvoyer un code de rsultat l'activit appelante setResult(int, Intent) comme la prcdente, le paramtre supplmentaire est un Intent contenant les valeurs de retour qui sera galement renvoy. onActivityResult(int, int, Intent) cette mthode de l'activit appelante est excute lorsqu'une activit lance se termine, le 1er paramtre est le numro associ cette activit lors de son lancement, le deuxime est le code de retour de cette activit, le dernier est l'Intent de retour de cette activit

ManifesteUne application est dcrite par un fichier XML appel AndroidManifest. Ce fichier permet d'indiquer : Le SDK utilis par une balise uses-sdk Les permissions : une balise uses-permission par autorisation demande Les activits de l'application : une balise activity pour chaque activit contenant chacune une ou plusieurs balises intent-filter Les services de l'application : une balise service pour chaque service contenant chacune une ou plusieurs balises intent-filter les couteurs d'intentions diffuses : une balise receiver pour chaque couteur contenant chacune une ou plusieurs balises intent-filter Les fournisseurs de contenu : une balise provider pour chaque activit Les bibliothques utilises : une balise uses-library pour chaque bibliothque

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

3

La structure gnrale de ce fichier est la suivante : . . . . . .

ActivitsChaque activit constituant une application doit tre dcrite par une balise . La balise minimale de l'activit principale est de la forme : La balise peut contenir de nombreux paramtres. Les paramtres gnralement utiliss sont : name qui dsigne la classe de l'activit label qui dsigne le nom sous lequel elle apparatra sur le terminal icon qui dsigne l'icne afficher sur le terminal Une activit secondaire (lance par l'activit principale) n'a pas de prorit android:icon ni android:label. Elle peut ne pas avoir de balise et si elle en a une on n'y rencontrera pas la proprit puisque ce n'est pas un programme principal. La balise permet d'indiquer ce que fait l'activit (on parle d'intension). Elle sera utilise par Android pour rechercher une activit pouvant rpondre une spcification donne (cette spfication lui sera fournie dans un objet de classe Intent). La forme gnrale de la balise est la suivante:

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

4

/> On y trouve les rubriques suivantes : Action qui indique le type daction effectue par l'activit (par exemple affichage, dition ) Category qui indique la catgorie daction (par exemple CATEGORY_BROWSABLE indique une activit qui peut tre appele par un navigateur) Data qui indique le type de donnes transmises lactivit lance ou le type de rponse attendu ainsi que le protocole (http, content, file ) Bien que le concepteur puisse dfinir ses propres valeurs de paramtres, il existe des valeurs prdfinies pour ces diverses rubriques dont les principales sont : Actions o android.intent.action.VIEW affichage de donnes o android.intent.action.EDIT affichage de donnes pour dition par lutilisateur o android.intent.action.MAIN activit principale dune application o android.intent.action.CALL appel tlphonique o android.intent.action.WEB_SEARCH recherche sur le WEB Catgories o android.intent.category.LAUNCHER activit propose au lancement par Android o android.intent.category.DEFAULT activit pouvant tre lance explicitement o android.intent.category.BROWSABLE peut afficher une information dsigne par un lien o android.intent.category.TAB activit associe dans un onglet dinterface (TabHost)

PermissionsPour autoriser une application accder certaines ressources il faut lui en donner l'autorisation par une balise . Les principales permissions sont :

Golocalisation (GPS)

Accs aux donnes personnelles

Modification de paramtres

Tlphonie

Envoi et rception de SMS/MMS

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

5

Audio

Rseau

Access au matriel

RessourcesRpertoires des ressourcesLe rpertoire res contient toutes les ressources qui seront mises dans le fichier application (apk). Il est constitu de sous rpertoires : drawable-hdpi (images en haute dfinition) drawable-ldpi (images en basse dfinition) drawable-mdpi (images en moyenne dfinition) layout (description en XML des interfaces) values (dfinitions en XML de valeurs : chanes, tableaux, valeurs numriques ) anim (description en XML danimations) menu (description en XML de menus pour lapplication) xml (fichiers XML utiliss directement par lapplication) raw (tous les autres types de ressources : fichiers texte, vido, son ) Remarque : Il est possible de crer d'autres rpertoires que ceux indiqus ci-dessus pour des cas particuliers.

Classe de rfrencement des ressources (classe R)Eclipse explore les fichiers contenus dans les sous-rpertoires de res et gnre une classe (appele R) dans laquelle un identifiant est cr pour chacun des lments trouvs : Fichiers (images, textes ..) placs dans drawable-xxxx , raw et xml Elments d'interface dfinis dans les fichiers placs dans layout et menu Valeurs dfinies dans les fichiers placs dans values Animations dfinies dans les fichiers placs dans anim On pourra ensuite, dans la pluspart des mthodes, dsigner ces ressources par leur identifiant dans cette classe R sous la forme : R.type.nom. Par exemple une image "photo.png" place dans drawable-hdpi sera dsigne par R.drawable.photo

Ressources de type valeursOn peut dfinir des ressources de type valeur (entiers, boolens, chanes de caractres, etc. et des tableaux) en les dcrivant dans des fichiers xml ayant la forme suivante : #AA7B03 567 64100

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

6

33000 Un titre Mercure Venus true 55px

Utilisation de ressourcesLes ressources peuvent tre utilises dans les fichiers XML (comme ceux de description d'interface) ou dans le code java.

Rfrencement dune ressource dans un fichier XMLOn rfrence une resource dans un fichier XML par : "@[paquetage:]type/identificateur" Par exemple : @string/machaine fait rfrence une chane dcrite dans un fichier XML plac dans le rpertoire res/values (le nom de ce fichier n'a aucune importance) et dfinie par : contenu de cette chaine

Rcupration dune ressource dans le code (la classe Resources)Dans le code les ressources sont dsignes par leur identifiant dans la classe R de la forme : R.type.nom. Certaines mthodes acceptent cette dsignation comme paramtre pour accder la ressource. Toutefois lorsque l'on doit accder au contenu de ressources on peut faire applet la classe Resources. import android.content.res.Resources On obtient une instance de la classe Resources par la mthode getResources() de lactivit. On accde ensuite aux ressources grce aux mthodes de cet objet qui acceptent en paramtre un identifiant de la forme R.type.nom, ces mthodes sont : boolean getBoolean(int) renvoie le boolen dsign int getInteger(int) renvoie l'entier dsign int[] getIntArray(int) renvoie le tableau d'entiers dsign String getString(int) renvoie la chane dsigne String[] getStringArray(int) renvoie le tableau de chanes dsign int getColor(int) renvoie le code de la couleur dsigne float getDimension(int) renvoie la valeur de l'unit dsigne Drawable getDrawable(int) renvoie l'image dsigne (formats possibles du fichier plac dans le rpertoire res : gif , jpeg , png et bmp) InputStream openRawResource(int) renvoie un flux de lecture sur la ressource dsigne. Par exemple : String titre = getResources().getString(R.string.texte_titre); permet de rcuprer la chane dfinie dans un fichier XML par : ..

UriLes Uri sont un moyen utilis pour dsigner des resources que ce soit sur Internet ou localement

Ressource sur InternetPour crer une Uri faisant rfrence une ressource sur Internet : Uri ressource = Uri.parse("http://domaine.sous_doamine/chemin/nom_du_fichier");

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

7

Exemple : Uri.parse("http://www.iutbayonne.univ-pau.fr/~dalmau/testTPs/ma_video.3gp"); Dsigne le fichier vido ma_video.3gp accessible sur http://www.iutbayonne.univ-pau.fr/~dalmau/testTPs/

Ressource localePour crer une Uri faisant rfrence une ressource embarque : Uri ressource = Uri.parse("android.resource://nom_du_paquetage_de_l_activit/" + R.chemin.mon_son); Exemple : Uri.parse("android.resource://iut.TP/" + R.raw.mon_son"); Dsigne le fichier son mon_son plac dans le rpertoire res/raw de l'activit dont le paquetage est iut.TP

Fichiers et rpertoires sur AndroidRpertoires d'Androidimport android.os.Environment Android permet la manipulation de fichiers de faon classique en java (classe File). Certains rpertoires ont un rle particulier dans le systme. On peut les obtenir grce l'activit ou la classe Environment comme suit : Rpertoire propre l'application : on l'obtient par la mthode getFilesDir() de l'activit Rpertoire de donnes : on l'obtient par Environment.getDataDirectory() Rpertoire des tlchargements : on l'obtient par Environment.getDownloadCacheDirectory() Rpertoire de stockage externe (en gnral une carte SD) : on l'obtient par Environment.getExternalStorageDirectory() Rpertoire racine d'Android : on l'obtient par Environment.getRootDirectory() Toutes ces mthodes renvoient un objet de classe File. Lorsqu'il s'agit d'un rpertoire il peut tre utilis pour ouvrir un fichier par : File monFichier = new File(repertoire, "nom_du_fichier"); ATTENTION : certains rpertoires peuvent tre totalement ferms ou n'autoriser que la lecture.

La classe Fileimport java.io.File C'est une classe java qui n'est pas propre Android, elle permet de manipuler des fichiers et des rpertoires

Mthodes de la classe FileOuverture File(String, String) ouvre un fichier, le premier paramtre est le nom du chemin, le second le nom du fichier File(File, String) ouvre un fichier, le premier paramtre est le rpertoire, le second le nom du fichier File(URI uri) ouvre un fichier, le paramtre dsigne ce fichier sous forme d'URI (de la forme file:/chemin/nom). Ce constructeur peut lever une exception de classe IllegalArgumentException si le paramtre n'est pas une URI correcte

Cration createNewFile() cre le fichier correspondant l'objet File. Cette mthode peut lever une exception de classe IOException si le fichier ne peut pas tre cr.

Supression delete() supprime le fichier, cette mthode renvoie on boolen indiquant si la destruction a pu se faire ou pas

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

8

deleteOnExit() le fichier sera supprim lorsque la machine virtuelle java se terminera si elle se termine normalement

Etats exists() renvoie true si le fichier ou le rpertoire existe canRead() renvoie true si le fichier ou le rpertoire peut tre lu canWrite() renvoie true si le fichier ou le rpertoire peut tre crit isDirectory() renvoie true si c'est un rpertoire isFile() renvoie true si c'est un fichier isHiden() renvoie true si le fichier ou le rpertoire est cach length() renvoie la taille du fichier (ne fonctionne pas pour un rpertoire) setReadOnly() positionne le fichier ou le rpertoire en lecture seule

Noms getName() renvoie la partie correspondant au nom du fichier ou du rpertoire (String) getPath() renvoie la partie correspondant au chemin du fichier ou du rpertoire (String) getAbsolutePath() renvoie le chemin absolu du fichier ou du rpertoire (String) getCanonicalPath() renvoie le chemin relatif du fichier ou du rpertoire (String). Cette mthode peut lever une exception de classe IOException. toURI() renvoie le fichier ou le rpertoire sous forme d'URI (de la forme file:/chemin/nom)

Rpertoires list() renvoie la liste des noms des fichiers contenus dans le rpertoire (String[]) listFiles() renvoie la liste des fichiers contenus dans le rpertoire (File[]) mkdirs() crer le rpertoire dsign par l'objet, si ncessaire les rpertoires du chemin son galement cres

Lecture/criture dans un fichierOn utilise des flux de lecture ou d'criture de classe FileInputStream et FileOutputStream qui sont construits partir de l'objet de classe File par : new FileInputStream(File) new FileOutputStream(File) Puis, partir de ces flux lis au fichier, on construit des flux adapts aux types de donnes lire ou crire.

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

9

InterfacesMise en place d'une interfaceElle peut se faire de deux faons : Par description de l'interface dans des fichiers XML Par programme Les fichiers XML qui dcrivent une interface sont placs dans le rpertoire res/layout. Ils sont rfrencs par R.layout.nom_du_fichierXML. Les activits peuvent utiliser la mthode setContentView(R.layout.nom_du_fichierXML) pour mettre en place l'interface dcrite par un tel fichier. Leur forme gnrale est :

Lorsque l'un des lments est un conteneur, il faut indiquer les lments qu'il contient :

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

10

Hirarchie (partielle) des classes pour les interfacesView ViewGroup FrameLayout DatePicker TimePicker ScrollView HorizontalScrollView LinearLayout TableLayout RadioGroup RelativeLayout AdapterView AbsListView ListView GridView AbsSpinner Spinner Gallery TextView EditText AutoCompleteTextView Button CompoundButton CheckBox ToggleButton RadioButton DigitalClock Chronometer ImageView ImageButton Progressbar AbsSeekBar RattingBarSeekBar

AnalogClock

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

11

Proprits et classes de base des interfacesLes unitsLorsque l'on indique des units dans les fichiers XML elles peuvent l'tre de plusieurs faons : en pixels (faire suivre la valeur de px) relativement la taille de la fonte de caractres (faire suivre la valeur de sp) en millimtres (faire suivre la valeur de mm) en pouces (faire suivre la valeur de in) en points = 1/72 pouce (faire suivre la valeur de pt) en pixels densit indpendante valent 1 pixel pour un cran de 160 dpi (faire suivre la valeur de dp) La valeur est exprime par un rel de la forme "14.3mm" par exemple. Dans ce qui suit on dsignera les units par "unit"

Les couleursElles sont dfinies par un code hexadcimal indiquant la transparence et les composantes (RVB) sous la forme "#AARRVVBB" o : AA est la transparence (FF opaque, 00 totalement transparent). Si le code de couleur ne comporte que 3 composantes AA est considr comme FF c'est--dire que #44FA8B est quivalent #FF44FA8B RR VV et BB sont, respectivement, les composantes rouge, verte et bleue Dans ce qui suit on dsignera les couleurs par "couleur"

La classe ViewLes classes View et ViewGroup ne sont pas utilises directement mais constituent les classes mres des autres. Elles sont dcrites ici pour viter de rpter leurs proprits dans les autres classes d'interface. View est la classe dont hritent toutes les classes utilises pour raliser des interfaces. Ses proprits et ses mthodes se retrouvent donc dans tous les lments d'interface.

Proprits positionnables en XLM

IdentifiantUn identifiant peut tre associ chaque lment dcrit dans un fichier XML, cet identifiant permet d'accder l'objet cr dans le code. Les lments ne devant pas tre accds dans le code peuvent ne pas avoir d'identifiant. android:id="@+id/monident" permettra de retrouver cet lment par findViewById(R.id.monident).

Visibilit android:visibility="x" (les valeurs possibles pour x sont : visible, invisible ou gone) Avec invisible la place est conserve, avec gone la place n'est pas conserve.

Fond android:background="couleur" pour dfinir une couleur ou android:background="@drawable/monimage" pour utiliser une image. L'image est place dans res/drawable-xxxx/ et s'appelle monimage.t (o t est png, jpg, ou gif). ATTENTION : les noms des images ne doivent utiliser que des minuscules ou des chiffres.

Taille et marges internes android:minHeight="unit" dfinit la hauteur minimale si possible android:minWidth="unit" dfinit la largeur minimale si possible android:paddingBottom="unit" marge interne en bas android:paddingLeft="unit" marge interne gauche android:paddingRight="unit" marge interne droite android:paddingTop="unit" marge interne en haut

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

12

AscenseursCes paramtres ne permettent pas d'ajouter des ascenseurs mais seulement de grer leur comportement lorsqu'ils existent. android:fadeScrollbars="b" o b vaut true ou false selon que l'on souhaite que les ascenseurs disparaissent ou pas lorsqu'ils ne sont pas utiliss. android:scrollbarDefaultDelayBeforeFade="x" o x est un entier qui dfinit le dlai (en ms) avant que les ascenseurs non utiliss ne disparaissent android:scrollbarFadeDuration="x" o x est un entier qui dfinit la dure d'effacement des ascenseurs (en ms)

Evnements android:clickable="b" (o b vaut true ou false). android:longClickable="b" (o b vaut true ou false).

Mthodes de la classe View :import android.view.View

Construction View(Context) le paramtre est gnralement l'activit elle-mme

Placement setLayoutParams(ViewGroup.LayoutParams)permet de dfinir le placement des objets dans la vue. Le paramtre de cette mthode est gnralement new ViewGroup.LayoutParams(l, h) o l dfinit la largeur et h la hauteur. Les valeurs pour l et h peuvent tre exprimes en pixels ou prendre les valeurs ViewGroup.LayoutParams.WRAP_CONTENT pour adapter la taille au contenu ou ViewGroup.LayoutParams.FILL_PARENT pour adapter la taille la place disponible.

Position bringToFront() met la vue en premier plan getLeft() renvoie la position en pixels de la gauche de la vue getTop()renvoie la position en pixels du haut de la vue getRight()renvoie la position en pixels de la droite de la vue getBottom()renvoie la position en pixels du bas de la vue

Taille et marges internes getWidth()renvoie la largeur de la vue en pixels getHeight()renvoie la hauteur de la vue en pixels setPadding(int, int, int, int) dfinit les marges (en pixels). Les paramtres sont, dans l'ordre : gauche, haut, droite, bas. getPaddingLeft()renvoie la marge gauche (en pixels). getPaddingTop()renvoie la marge haute (en pixels). getPaddingRight()renvoie la marge droite (en pixels). getPaddingBottom()renvoie la marge basse (en pixels).

Fond setBackgroundColor(int) dfinit la couleur du fond setBackgroundDrawable(Drawable) dfinit une image de fond setBackgroundResource(int)dfinit le fond partir d'un identificateur de ressource

Rafraichissement requestLayout() provoque un rafraichissement des positions des lments de la vue

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

13

invalidate()provoque un rafraichissement de la vue

Evenements setOnClickListener(OnClickListener) associe un couteur d'vnements aux clics sur la vue setOnLongClickListener(OnLongClickListener) associe un couteur d'vnements aux clics longs sur la vue setOnKeyListener(OnKeyListener) associe un couteur d'vnements aux actions clavier sur la vue setOnTouchListener(OnTouchListener) associe un couteur d'vnements aux touchs sur la vue

Focus isFocusable() renvoie true si la vue peut prendre le focus setFocusable(boolean) fait ou pas prendre le focus la vue isFocusableInTouchMode()renvoie true si la vue peut prendre le focus lorsqu'elle est touche setFocusableInTouchMode(boolean) autorise ou non la vue a prendre le focus lorsqu'elle est touche

La classe ViewGroupProprits positionnables en XLM pour les lments placs l'intrieur

Taille android:layout_height="t" (o t peut tre une unit ou prendre les valeurs : FILL_PARENT ou WRAP_CONTENT) pour occuper tout l'espace en hauteur ou seulement ce qui est ncessaire android:layout_width="t" (o t peut tre une unit prendre les valeurs : FILL_PARENT ou WRAP_CONTENT) pour occuper tout l'espace en largeur ou seulement ce qui est ncessaire

Marges externes android:layout_marginBottom="unit" marge externe en bas android:layout_marginLeft="unit" marge externe gauche android:layout_marginRight="unit" marge externe droite android:layout_marginTop="unit" marge externe en haut La mthode correspondant ces 4 paramtres est : setPadding(int, int, int, int)

Mthodes de la classe ViewGroup :import android.view.ViewGroup

Construction ViewGroup(Context) le paramtre est gnralement l'activit elle-mme

Elments du groupe addView(View) ajoute un lment au groupe getChildCount() renvoie le nombre d'lments du groupe getFocusedChild() renvoie l'lment qui a actuellement le focus (objet de classe View) removeView(View) enlve un lment du groupe removeAllViews() enlve tous les lments du groupe

Marges setPadding(int, int, int, int) dfinit les marges (en pixels). Les paramtres sont, dans l'ordre : gauche, haut, droite, bas.

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

14

Evnements traits par les classes de base des interfacesL'interface OnClickListenerimport android.view.View.OnClickListener Dfinit les couteurs d'vnements de type clic. La mthode surcharger pout traiter les vnements est : onClick(View)

L'interface OnLongClickListenerimport android.view.View.OnLongClickListener Dfinit les couteurs d'vnements de type clic long. La mthode surcharger pout traiter les vnements est : onLongClick(View)

L'interface OnKeyListenerimport android.view.View.OnKeyListener Dfinit les couteurs d'vnements de type clavier. La mthode surcharger pout traiter les vnements est : onKey(View, int, KeyEvent) Le deuxime paramtre est le code de la touche tape, le troisime est l'vnement clavier. Le code de la touche tape peut prendre les valeurs : KEYCODE_0 KEYCODE_9 pour les chiffres KEYCODE_A KEYCODE_Z pour les majuscules KEYCODE_ALT_LEFT , KEYCODE_ALT_RIGHT , KEYCODE_SHIFT_LEFT et KEYCODE_SHIFT_RIGHT pour les touches Alt et Shift KEYCODE_NUM pour la touche Num KEYCODE_APOSTROPHE , KEYCODE_GRAVE pour l'apostrophe et l'anti apostrophe KEYCODE_SLASH et KEYCODE_BACKSLASH pour le / et l'antislash KEYCODE_AT pour @ KEYCODE_STAR pour la touche * KEYCODE_TAB pour la touche Tab KEYCODE_SPACE pour l'espace KEYCODE_COMMA , KEYCODE_PERIOD , KEYCODE_SEMICOLON pour la virgule, le point et le point virgule KEYCODE_BACK pour la touche de correction (backspace) KEYCODE_CALL et KEYCODE_ENDCALL pour les touches d'appel et de fin d'appel KEYCODE_CAMERA , KEYCODE_FOCUS pour la touche de dclenchement et de rglage de focus de l'appareil photo KEYCODE_CLEAR pour la touche Clear KEYCODE_DEL pour la touche Del KEYCODE_HOME pour la touche Home KEYCODE_MENU pour la touche Menu KEYCODE_DPAD_CENTER, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT, KEYCODE_DPAD_UP pour le joystick KEYCODE_ENTER pour la touche Entre KEYCODE_ENVELOPE pour la touche spciale Enveloppe KEYCODE_EXPLORER pour la touche spciale Explorateur KEYCODE_EQUALS, KEYCODE_MINUS , KEYCODE_LEFT_BRACKET , KEYCODE_RIGHT_BRACKET pour les crochets KEYCODE_MEDIA_FAST_FORWARD , KEYCODE_MEDIA_NEXT , KEYCODE_MEDIA_PLAY_PAUSE , KEYCODE_MEDIA_PREVIOUS , KEYCODE_MEDIA_REWIND , KEYCODE_MEDIA_STOP pour les touches de contrle des mdias

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

15

KEYCODE_MUTE , KEYCODE_VOLUME_DOWN, KEYCODE_VOLUME_UP pour les touches de contrle du volume

La classe KeyEventimport android.view.KeyEvent Associe aux vnements clavier. Ses mthodes sont les suivantes : getAction () qui renvoie un entier pouvant prendre les valeurs ACTION_DOWN ou ACTION_UP qui indique l'action faite sur la touche (appuye, lche). getRepeatCount()renvoie le nombre de rptitions lorsque la touche est maintenue getKeyCode() renvoie le code de la touche (mme valeur que le dernier paramtre de onKey) Les mthodes isAltPressed() , isShiftPressed() , isCtrlPressed() , isCapsLockOn() , isNumLockOn() , isScrollLockOn() permettent de tester l'tat des touches de modification.

L'interface OnTouchListenerimport android.view.View.OnTouchListener Dfinit les couteurs d'vnements de type touch. La mthode surcharger pout traiter les vnements est : onTouch(View, MotionEvent) Le second paramtre est l'vnement de touch.

La classe MotionEventimport android.view.MotionEvent Associe aux vnements de dplacement (souris, cran tactile). Ses mthodes sont les suivantes : getAction () qui renvoie un entier pouvant prendre les valeurs ACTION_DOWN , ACTION_UP , ACTION_MOVE ou ACTION_OUTSIDE getPressure() renvoie un rel entre 0 et 1 indiquant la force de pression du touch sur l'cran getX() et getY() renvoient un rel entre -1 et 1 indiquant les coordonnes (resp en x et en y). getXPrecision() et getYPrecision() renvoient un rel indiquant la prcision des coordonnes (resp en x et en y).

Les conteneursLes conteneurs sont utiliss pour placer des lments d'interface ou d'autres conteneurs. Ils hritent tous de ViewGroup. Leurs proprits sont donc au moins celles dcrites ci-dessus pour View et ViewGroup auxquelles viennent s'ajouter des proprits spcifiques dcrites dans cette partie.

La classe FrameLayoutPlacement en haut gauche. Si l'on place plusieurs lments ils se superposent, gnralement FrameLayout est utilis pour ne placer qu'un seul lment.

Proprits supplmentaires positionnables en XLM

Couleurs ou images android:foreground="couleur" pour dfinir une couleur ou android:foreground="@drawable/monimage" pour utiliser une image. L'image est place dans res/drawable/ et s'appelle monimage.x (o x est png, jpg, ou gif). android:foregroundGravity="g" (o g peut prendre les valeurs : top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill) utilis lorsque android:foreground est dfini par une image pour donner sa position.

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

16

Mthodes de la classe FrameLayoutandroid.widget.FrameLayout

Construction FrameLayout(Context) le paramtre est gnralement l'activit elle-mme

Fond setForeground(Drawable) dfinit une image comme fond getForeground() renvoie l'image de fond (objet de classe Drawable) setForegroundGravity(int) Le paramtre est l'une des constantes dfinies dans la classe Gravity on utilise donc Gravity. TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL

La classe LinearLayoutPlace les lments les uns cot des autres horizontalement ou verticalement.

Proprits supplmentaires positionnables en XLM android:orientation="o" (o o peut prendre les valeurs : vertical ou horizontal) android:weightSum="x" (o x est un rel entre 0 et 1) dsigne la somme des poids de tous les lments mis dans le LinearLayout. Un paramtre de type android:layout_weight="x" (o x est un rel entre 0 et 1) peut tre associ chacun des lments placs dans le LinearLayout pour indiquer leur poids de redimensionnement relatif la valeur de layout_weightSum. android:gravity="g" (o g peut prendre les valeurs : top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill) dfinit comment se placent les lments contenus par ce conteneur.

Mthodes de la classe LinearLayoutandroid.widget.LinearLayout

Construction LinearLayout(Context) le paramtre est gnralement l'activit elle-mme

Position et disposition getOrientation() renvoie un entier qui vaut LinearLayout.HORIZONTAL ou LinearLayout.VERTICAL setOrientation(int) dfinit l'orientation, le paramtre est un entier qui vaut LinearLayout.HORIZONTAL ou LinearLayout.VERTICAL getWeightSum() renvoie un rel correspondant la somme des poids associe au LinearLayout setWeightSum(float) dfinit la somme des poids associe au LinearLayout setGravity(int) Le paramtre est l'une des constantes dfinies dans la classe Gravity on utilise donc Gravity. (TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL)

La classe AbsoluteLayoutPlace les lments selon des coordonnes.

Proprits positionnables en XLM pour les lments placs l'intrieurChaque lment ajout dans un AbsoluteLayout indique sa position en mettant dans ses proprits : android:layout_x="unit" android:layout_y="unit"

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

17

Mthodes de la classe AbsoluteLayoutandroid.widget.AbsoluteLayout

Construction AbsoluteLayout(Context) le paramtre est gnralement l'activit elle-mme

Les classe ScrollView et HorizontalScrollViewUn ScrollView est une zone dfilement vertical tandis qu'un HorizontalScrollView permet un dfilement horizontal. Ils ne peuvent contenir qu'un seul lment. Gnralement ils sont utiliss pour contenir un LinearLayout (dont l'orientation correspond celle du ScrollView) et offrir des ascenseurs. Lorsque l'on veut avoir un dfilement horizontal et vertical il suffit de mettre un HorizontalScrollView dans un ScrollView. ATTENTION : En raison de l'cran tactile il n'est pas possible de mettre une zone avec ascenseurs dans une zone ayant elle-mme des ascenseurs car le dfilement se fera toujours sur la zone la plus externe (sur le contenant et non sur le contenu).

Proprits supplmentaires positionnables en XLMMmes paramtres XML que FrameLayout plus : android:fillViewport="b" (o b vaut true ou false) indique si le contenu doit tre tir pour occuper la place disponible ou pas.

Mthodes des classes ScrollView et HorizontalScrollViewandroid.widget.ScrollView android.widget.HorizontalScrollView

Construction ScrollView(Context) le paramtre est gnralement l'activit elle-mme HorizontalScrollView(Context) le paramtre est gnralement l'activit elle-mme

Dfilement smoothScrollBy(int, int) permet de faire dfiler la vue. Les paramtres indiquent le nombre de pixels de dfilement (resp horizontalement et verticalement) smoothScrollTo(int, int) permet de faire dfiler la vue. Les paramtres indiquent la nouvelle position de la vue en pixels (resp horizontalement et verticalement) awakenScrollBars()provoque l'affichage des ascenseurs (qui s'effaceront au bout d'un moment). isHorizontalScrollBarEnabled()renvoie true si l'ascenseur horizontal est autoris. setHorizontalScrollBarEnabled(boolean) active ou pas l'ascenseur horizontal. isVerticalScrollBarEnabled()renvoie true si l'ascenseur vertical est autoris. setVerticalScrollBarEnabled(boolean) active ou pas l'ascenseur vertical.

Placement setFillViewport(boolean) permet de dfinir si le contenu doit tre tir pour occuper la place disponible (paramtre true) ou pas (paramtre false)

La classe TableLayoutDispose les lments en lignes et colonnes. Chaque ligne est dsigne dans le fichier XML par . Elle contient 1 ou plusieurs lments. Le nombre de colonnes est dtermin par la ligne contenant le plus d'lments. TableLayout n'a pas d'ascenseurs, on peut les ajouter en l'incluant dans un ScrollView ou HorizontalScrollView.

Proprits supplmentaires positionnables en XLM android:collapseColumns="x,y, " (o x, y, ... sont des numros de colonnes cacher (dmarrant 0)).

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

18

android:shrinkColumns="x,y, " (o x, y, ... sont des numros de colonnes qui peuvent tre rtrcies en fonction de la place disponible (dmarrant 0)). android:stretchColumns="x,y, " (o x, y, ... sont des numros de colonnes qui peuvent tre agrandies en fonction de leur contenu (dmarrant 0)).

Proprits positionnables en XLM pour les lments placs l'intrieur android:layout_span="x" (o x est un entier indiquant sur combien de colonnes s'tend l'lment (par dfaut 1))

Mthodes de la classe TableLayoutandroid.widget.TableLayout

Construction TableLayout(Context) le paramtre est gnralement l'activit elle-mme

Aspect isColumnCollapsed(int) indique si la colonne dont le numro est donn en paramtre est cache setColumnCollapsed(int, boolean) cache ou pas (second paramtre) la colonne dont le numro est donn en premier paramtre isColumnShrinkable(int) indique si la colonne dont le numro est donn en paramtre est rtrcissable setColumnShrinkable(int, boolean) rend ou pas rtrcissable (second paramtre) la colonne dont le numro est donn en premier paramtre isColumnStretchable(int) indique si la colonne dont le numro est donn en paramtre est tirable setColumnStretchable(int, boolean) rend ou pas tirable (second paramtre) la colonne dont le numro est donn en premier paramtre isShrinkAllColumns() indique si toutes les colonnes sont rtrcissables setShrinkAllColumns(boolean) rend toutes les colonnes (ou aucune) rtrcissables isStretchAllColumns() indique si toutes les colonnes sont tirables setStretchAllColumns(boolean) rend toutes les colonnes (ou aucune) tirables

La classe RelativeLayoutPermet de placer des lments les uns relativement aux autres.

Proprits supplmentaires positionnables en XLM android:gravity="g" (o g peut prendre les valeurs : top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill) dfinit comment se placent les lments contenus par ce conteneur.

Proprits positionnables en XLM pour les lments placs l'intrieurPour dfinir la position d'un lment par rapport un autre ou par rapport au RelativeLayout lui-mme (parent) on ajoute dans la balise de cet lment : Pour les positions par rapport au RelativeLayout : android:layout_alignParentBottom="b" (o b vaut true ou false) android:layout_alignParentLeft="b" (o b vaut true ou false) android:layout_alignParentRight="b" (o b vaut true ou false) android:layout_alignParentTop="b" (o b vaut true ou false) android:layout_centerHorizontal="b" (o b vaut true ou false) android:layout_centerInParent="b" (o b vaut true ou false) android:layout_centerVertical="b" (o b vaut true ou false) Pour les positions par rapport d'autres lments : android:layout_above="@+id/ident"/

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

19

android:layout_below="@+id/ident"/ android:layout_toLeftOf="@+id/ident"/ android:layout_toRightOf="@+id/ident"/ android:layout_alignLeft="@+id/ident"/ android:layout_alignRight="@+id/ident"/ android:layout_AlignTop="@+id/ident"/ android:layout_AlignBottom="@+id/ident"/

Mthodes de la classe RelativeLayoutandroid.widget.RelativeLayout

Construction RelativeLayout(Context) le paramtre est gnralement l'activit elle-mme

Disposition setGravity(int) Le paramtre est l'une des constantes dfinies dans la classe Gravity on utilise donc Gravity. (TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL)

Les groupesLes groupes permettent de regrouper des lments en liste, tableaux, etc. Ils hritent tous de ViewGroup. Leurs proprits sont donc au moins celles dcrites ci-dessus pour View et ViewGroup auxquelles viennent s'ajouter des proprits spcifiques dcrites dans cette partie. Le groupe RadioGroup ne permet que de regroupes des boutons radio et de faire en sorte qu'un seul soit slectionn la fois. Les groupes ListView, GridView et Gallery permettent d'organiser des lments quelconques. Gnralement ListView et GridView sont utiliss pour des listes ou des tableaux de chanes de caractres tandis que Gallery est utilis pour des images. Toutefois ces trois groupes peuvent grer des vues quelconques (classe View ou drive) dans ce cas il faut crire un gestionnaire de contenu (Adapter) et le leur associer.

RadioGroupRserv au groupage de boutons radio (classe RadioButton). Le RadioGroup garantit qu'un seul bouton soit coch la fois toutefois il ne fait aucune hypothse sur l'tat initial des boutons. Ceci signifie que si dans le fichier XML vous avez activ l'un des boutons du groupe il le restera mme lorsque vous en activerez un autre. Il est donc prfrable de ne mettre dans le fichier XML que des boutons non cochs puis d'initialiser le RadioGroup par sa mthode check (voir plus loin).

Proprits supplmentaires positionnables en XLMMmes paramtres XML que LinearLayout Exemple de fichier XML :

Mthodes de la classe RadioGroupandroid.widget.RadioGroup

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

20

Construction RadioGroup(Context) le paramtre est gnralement l'activit elle-mme

Selection check(int) active le bouton radio dont l'identifiant est pass en paramtre clearCheck() dsactive tous les boutons radio getCheckedRadioButtonId() renvoie l'identifiant du bouton radio actif

Evnements setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener) associe un couteur aux changements de slection. La mthode onCheckedChanged(RadioGroup, int) de l'interface RadioGroup.OnCheckedChangeListener doit tre surgarge pour traiter les vnements. Le premier paramtre est la RadioGroup concern, le second indique le rang du bouton radio activ.

ListViewListView place les lments en liste avec un ascenseur vertical si ncessaire. ListView est normalemnt utilis pour afficher des lments textuels ventuellement accompagns d'une case cocher lorsqu'il s'agit d'une liste choix multiples. Il est toutefois possible d'y afficher des lments plus complexes en utisant un gestionnaire de contenu.

Proprits supplmentaires positionnables en XLM

Contenu de type texte android:entries="@array/maliste" dfinit le contenu de la liste partir d'une ressource de type tableau de chanes de caractres dfinie dans un fichier xml plac dans res/values/ sous la forme suivante : premier lment deuxime lment dernier lment

Sparateurs android:divider="couleur" dfinit la couleur des sparateurs ou android:divider="@drawable/monimage" pour utiliser une image. L'image est place dans res/drawable/ et s'appelle monimage.x (o x est png, jpg, ou gif). android:dividerHeight="unit" dfinit la hauteur des sparateurs (si c'est une image elle sera dforme).

Type de choix android:choiceMode="c" (o c peut prendre les valeurs : none, singlechoice, multipleChoice) pour indiquer le mode de choix dans la liste (aucun, un seul, plusieurs).

Mthodes de la classe ListViewandroid.widget.ListView

Construction ListView(Context) le paramtre est gnralement l'activit elle-mme

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

21

ContenuLe contenu d'une ListView peut tre dfini de faon statique par la proprit android:entries dans le fichier xml. Lorsque l'on souhaite avoir un contenu dynamique on utilise un ArrayAdapter (collection) que l'on remplit (mthodes add ou insert du ArrayAdapter) et que l'on associe la ListView par la mthode setAdapter(ArrayAdapter). La classe ArrayAdapter possde les mthodes suivantes :

Construction ArrayAdapter(Context, type) le premier paramtre est gnralement l'activit elle-mme, le second paramtre peut tre une valeur prdfinie : android.R.layout.simple_list_item_1 pour une liste choix unique ou android.R.layout.simple_list_item_multiple_choice pour une liste choix multiple (dans ce cas une case cocher apparat cot de chaque lment de la liste). Le second paramtre peut galement tre l'identificateur d'un widget TextView personnalis dfini dans un fichier xml plac dans res/layout et dsign par R.layout.nom_du_fichier_xml

Elments add(Object) pour ajouter la fin insert(Object, int) pour insrer un lment au rang donn en 2me paramtre clear() pour enlever tous les lments remove(Object) pour enlever un lment getCount() renvoie le nombre d'lments getItem(int) renvoie l'lment (Onject) dont le rang est donn en 2me paramtre getPosition(Object) renvoie le rang de l'objet dsign en paramtre

Remarque : Pour grer un contenu autre que du texte il existe un gestionnaire (classe SimpleAdapter) permettant que chaque lment de la liste soit une petite interface dfinie dans un fichier xml. On peut galement crire son propre gestionnaire de contenu en dfinissant une classe hritant de BaseAdapter (voir exemple fourni pour la classe Gallery plus loin).

Aspect setDivider(Drawable) dfinit l'image qui sera dessine entre chaque lment de la liste getDivider() retourne l'image dessine entre chaque lment de la liste setDividerHeight(int) dfinit la hauteur de la sparation entre chaque lment de la liste getDividerHeight() renvoie la hauteur de la sparation entre chaque lment de la liste addFooter(View)ajoute une vue en bas de la liste addHeader(View) ajoute une vue en haut de la liste setFooterDividersEnabled(boolean) autorise ou interdit la dessin d'un sparateur pour le bas de liste setHeaderDividersEnabled(boolean) autorise ou interdit la dessin d'un sparateur pour le haut de liste invalidateViews() provoque le rafraichissement des tous le lments internes

Selection setItemChecked(int, boolean) slectionne (true) ou dslectionne (false) un lment de liste par son rang ( partir de 0). isItemChecked(int) renvoie un boolen qui indique si l'lment de liste dsign par son rang ( partir de 0) est selectionn. clearChoices() invalide les choix actuels getChoiceMode() renvoie le mode de choix peut prendre les valeurs : none, singleChoice ou multipleChoice setChoiceMode(int) dfinit le mode de choix le paramtre peut prendre les valeurs : none, singleChoice ou multipleChoice clearTextFilter() supprime le filtrage des lments au fur et mesure de la saisie

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

22

getTextFilter() renvoie la chane de caractres utilise pour le filtrage des lments au fur et mesure de la saisie isTextFilterEnabled() renvoie un boolen qui indique si le filtrage des lments au fur et mesure de la saisie est actif ou pas setFilterText(String) dfinit la chane de caractres utilise pour le filtrage des lments au fur et mesure de la saisie setTextFilterEnabled(boolean) active ou dsactive le filtrage des lments au fur et mesure de la saisie

Evnements setOnItemClickListener(AdapterView.OnItemClickListener) associe un couteur d'vnements au clic sur un lment. La mthode onItemClick(AdapterView, View, int, long) de l'interface AdapterView.OnItemLongClickListener est surcharge pour traiter l'vnement. Le 3me paramtre indique le rang de l'lment et le dernier son identifiant. setOnItemLongClickListener(AdapterView.OnItemLongClickListener) associe un couteur d'vnements au clic long sur un lment. La mthode onItemLongClick(AdapterView, View, int, long) de l'interface AdapterView.OnItemLongClickListener est surcharge pour traiter l'vnement. Le 3me paramtre indique le rang de l'lment et le dernier son identifiant. setOnItemSelectedListener(AdapterView.OnItemSelectedListener) associe un couteur d'vnements la slection d'un lment (pour les listes choix multiples). La mthode onItemSelected (AdapterView, View, int, long) de l'interface AdapterView.OnItemSelectListener est surcharge pour traiter l'vnement de slection d'un lment. Le 3me paramtre indique le rang de l'lment et le dernier son identifiant. La mthode onNothingSelected(AdapterView) est surcharge pour traiter l'vnement de non slection.

GridViewFonctionne comme un ListView mais place les lments en tableau avec ascenseur vertical seulement si ncessaire.

Proprits supplmentaires positionnables en XLM android:gravity="g" (o g peut prendre les valeurs : top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill) dfinit comment se placent les lments contenus par ce conteneur.

Couleurs android:listSelector="couleur" pour dfinir une couleur pour dsigner l'objet slectionn

Slection android:choiceMode="m" (o m peut prendre les valeurs : none, singleChoice ou multipleChoice dfinit le type de slection android:textFilterEnabled="b" (o b vaut true ou false) mise en place d'un filtrage des lments au fur et mesure de la saisie android:drawSelectorOnTop="b" (o b vaut true ou false) true indique que le selecteur est dessin sur l'lment choisi (par dfaut c'est false) android:fastScrollEnabled="b" (o b vaut true ou false) autorise ou pas le parcours rapide

Dimensions et espacement des colonnes android:numColumns="x" (o est une valeur entire) dfinit le nombre de colonnes android:columnWidth="unit" android:horizontalSpacing="unit" android:verticalSpacing="unit"

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

23

android:stretchMode="s" (o s peut prendre les valeurs : none, spacingWidth, columnWidth, spacingWidthUniform) dfinit comment les colonnes occupent la place disponible : none=non occupe, spacingWidth=tirement de l'espace entre les colonnes, columnWidth=tirement des colonnes, spacingWidthUniform=tirement uniforme de toutes les colonnes.

Mthodes de la classe GridViewandroid.widget.GridView

Construction GridView(Context) le paramtre est gnralement l'activit elle-mme

ContenuPour remplir un GridView on utilise les mmes mcanismes que ceux dcrits plus haut pour la classe ListView.

Position et disposition setGravity(int) Le paramtre est l'une des constantes dfinies dans la classe Gravity on utilise donc Gravity. (TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL) setStretchMode(int) dfinit comment les colonnes occupent la place disponible le paramtre peut prendre les valeurs : none, spacingWidth, columnWidth, spacingWidthUniform) none=non occupe, spacingWidth=tirement de l'espace entre les colonnes, columnWidth=tirement des colonnes, spacingWidthUniform=tirement uniforme de toutes les colonnes getStretchMode() renvoie l'information de placement des colonnes (voir setStretchMode pour la valeur renvoye). setColumnWidth(int) dfinit en pixels la largeur des colonnes setHorizontalSpacing(int) dfinit en pixels l'espacement entre les colonnes setVerticalSpacing(int) dfinit en pixels l'espacement entre les lignes setNumColumns(int numColumns) dfinit le nombre de colonnes invalidateViews() provoque le rafraichissement des tous le lments internes

Selection setSelection(int) slectionne un lments de liste par son rang ( partir de 0). clearChoices() invalide les choix actuels getChoiceMode() renvoie le mode de choix peut prendre les valeurs : none, singleChoice ou multipleChoice setChoiceMode(int) dfinit le mode de choix le paramtre peut prendre les valeurs : none, singleChoice ou multipleChoice clearTextFilter() supprime le filtrage des lments au fur et mesure de la saisie getTextFilter() renvoie la chane de caractres utilise pour le filtrage des lments au fur et mesure de la saisie isTextFilterEnabled() renvoie un boolen qui indique si le filtrage des lments au fur et mesure de la saisie est actif ou pas setFilterText(String) dfinit la chane de caractres utilise pour le filtrage des lments au fur et mesure de la saisie setTextFilterEnabled(boolean) active ou dsactive le filtrage des lments au fur et mesure de la saisie

EvnementsMmes mthodes que pour ListView

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

24

GalleryCette classe est gnralement utilise pour faire une galerie d'images mais elle peut contenir d'autres types d'lments (voir plus loin). Le contenu d'une galerie est dfini dans le code java par un gestionnaire de contenu.

Proprits supplmentaires positionnables en XLM android:gravity="g" (o g peut prendre les valeurs : top, bottom, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill) dfinit comment se placent les lments dans la galerie. android:animationDuration="x" (o est une valeur entire) dfinit la dure de la transistion (en ms) lorsque l'on passe d'un lment l'autre. android:unselectedAlpha="x" (o est une valeur relle) dfinit la transparence des lments non slectionns.

Exemple de fichier XML :

Mthodes de la classe Galleryandroid.widget.Gallery

Construction Gallery(Context) le paramtre est gnralement l'activit elle-mme

Contenu setAdapter(Adapter) permet de dfinir le contenu de la galerie. Lorsqu'il s'agit d'images, la faon de procder est la suivante : 1. Rcuprer l'objet de classe Gallery dfini dans le fichier xml de description de l'interface par : galerie = (Gallery) findViewById(R.id.identificateur_de_votre_galerie_dans_le_xml); 2. Lui associer un gestionnaire de contenu par : galerie.setAdapter(new GestionnaireDeContenuImages(mon_activit, largeur, hauteur)); Le premier paramtre est l'activit elle-mme. Les 2 derniers paramtres dfinissent la hauteur et la largeur des images affiches dans la galerie. Celles-ci seront ventuellement dformes pour obtenir ces dimensions. 3. Dfinir une classe pour ce gestionnaire de contenu par : public class MonGestDeContenu extends BaseAdapter { private Context contexte; // Tableau des identificateurs d'images. // Les images ont t places dans res/drawable/hdmi sous les noms a_1 a_N private Integer[] identificateurDImages = { R.drawable.a_1, R.drawable.a_2, , R.drawable.a_N }; private int largeur, hauteur; private int marges; private int couleurFond; public GestionnaireDeContenuImages(Context ctx, int l, int h) { contexte = ctx; largeur = l; hauteur = h; // dimensions des images marges = 6; // marges droite et gauche de chaque image (ventuellement passer en paramtre) couleurFond = Color.BLACK; // couleur de fond des images (ventuellement passer en paramtre) } public int getCount() { return identificateurDImages.length; }

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

25

public Object getItem(int position) { return contexte.getResources().getDrawable(imgId[position]); } public long getItemId(int position) { return imgId[position]; } public View getView(int position, View ancienneVue, ViewGroup vueParente) { ImageView vueDImage = new ImageView(contexte); vueDImage.setImageResource(identificateurDImages[position]); vueDImage.setLayoutParams(new Gallery.LayoutParams(largeur, hauteur)); vueDImage.setPadding(marges, 0, marges, 0); vueDImage.setScaleType(ImageView.ScaleType.FIT_XY); vueDImage.setBackgroundColor(couleurFond); return vueDImage; } }

Disposition et aspect setGravity(int) Le paramtre est l'une des constantes dfinies dans la classe Gravity on utilise donc Gravity. (TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL) setSpacing(int)dfinit l'espace en pixels entre les lments de la galerie setUnselectedAlpha(float)dfinit la transparence pour les lments non slectionns showContextMenu()rend visible le menu contextuel

Slection getCount() renvoie le nombre d'lments de la galerie setSelection(int, boolean) slectionne un lment de la galerie par son rang ( partir de 0), le second paramtre active ou pas l'animation lie cette slection getSelectedItemId() renvoie l'identificateur l'lment slectionn getSelectedItemPosition() renvoie le rang de l'lment slectionn ( partir de 0)

EvnementsMmes mthodes que pour ListView

Animation setAnimationDuration(int) dfinit la dure (en ms) de l'animation de changement d'lment

Utilisation de la classe Gallery pour faire une interface organise en pagesLa classe Gallery est normalement utilise pour faire dfiler des images. Toutefois elle ne se restreint pas ce seul usage, en effet il est possible d'utiliser une galerie contenant des interfaces. Le contenu d'une galerie est gr par un gestionnaire de contenu (Adapter) si l'on crit un gestionnaire de contenu qui gre des contenants (ViewGroup) on peut raliser une interface dont on fait dfiler les pages (comme le fait le bureau d'Android). Fichier XML de l'interface de base de l'application (par exemple "main.xml") plac dans res/layout :

Mthodes de la classe DigitalClockandroid.widget.DigitalClock

Construction DigitalClock(Context) le paramtre est gnralement l'activit elle-mme

ChronometerC'est un compteur qui dmarre la valeur donne par setBase et compte en incrmentant. Son apparence est celle d'un texte dans lequel apparat le temps (voir format ci-dessous). Mmes paramtres XML que TextView plus : android:format="f" (o f est une chane dans laquelle la premire occurrence de %s sera remplace par la valeur du chronomtre sous la forme MM:SS ou H:MM:SS)

Mthodes de la classe Chronometerandroid.widget.Chronometer

Construction Chronometer(Context) le paramtre est gnralement l'activit elle-mme

Utilisation getBase() renvoie le point de dpart du chronomtre (long) setBase(long) dfinit le point de dpart du chronomtre start() lance le chronomtre stop() arrte le chronomtre

Aspect setFormat(String) le paramtre est une chane dans laquelle la premire occurrence de %s sera remplace par la valeur du chronomtre sous la forme MM:SS ou H:MM:SS getFormat() renvoie le format utilis (chane)

Evnements setOnChronometerTickListener(Chronometer.OnChronometerTickListener) dfinit un couteur d'vnements pour chaque incrmentation du chronomtre. L'interface Chronometer.OnChronometerTickListener possde une mthode onChronometerTick(Chronometer) qui doit tre surcharge pour traiter l'vnement. Cette mthode reoit le chronomtre lui-mme en paramtre.

NotificationsAndroid propose un mcanisme simple pour envoyer des informations visuelles l'utilisateur : la classe Toast. Il s'agit d'une fentre qui apparat en premier plan puis disparat seule au bout d'un temps donn (2 ou 5 secondes).

La classe ToastMthodes de la classe Toastandroid.widget.Toast

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

42

Cration d'un Toast Toast.makeText(Context, String, int) cette mthode renvoie l'objet de classe Toast cr. Le premier paramtre est gnralement l'activit elle-mme, le deuxime paramtre est le message afficher, le dernier paramtre indique la dure d'affichage les seules valeurs possibles sont : Toast.LENGTH_SHORT (2 secondes) ou Toast.LENGTH_LONG (5 secondes).

Positionnement d'un Toast setGravity(int, int, int) cette mthode doit tre appele avant l'affichage par show pour indiquer o s'affichera le message. Le premier paramtre sert placer le message par rapport l'cran. Il peut prendre l'une des valeurs dfinies dans la classe Gravity soit : Gravity. (TOP, BOTTOM, LEFT, RIGHT, CENTER_VERTICAL, FILL_VERTICAL, CENTER_HORIZONTAL, FILL_ HORIZONTAL, CENTER, FILL). Les deux paramtres suivants indiquent le dcalage horizontal et vertical (en pixels).

Affichage d'un Toast show() cette mthode affiche le message pour la dure dfinie lors de sa cration.

Textes FormatsLes widgets qui affichent du texte (TextView, Button, CheckBox ) acceptent, pour dfinir ce texte, des objets de classe CharSequence. On peut utiliser la classe String qui hrite de CharSequence mais elle ne permet pas de formatter le texte. Le formet (taille, police, ..) dfini dans le fichier XML s'applique donc tout le texte. La classe SpannableStringBuilder qui hrite aussi de CharSequence (et peut donc tre utilise au lieu de String) permet d'apposer des formats des parties de texte.

Cration d'un texte format :SpannableStringBuilder texte = new SpannableStringBuilder("chaine formater");

Application de formats :Cela se fait par la mthode setSpan de SpannableStringBuilder : texte.setSpan(CharacterStyle, int, int, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); Le premier paramtre permet de dfinir : La couleur du texte en y mettant : new ForegroundColorSpan(int) qui reoit en paramtre un code de couleur La couleur du fond en y mettant : new BackgroundColorSpan(int) qui reoit en paramtre un code de couleur La police en y mettant : new TypeSpaceSpan(String) qui reoit en paramtre le nom de police qui peut tre : normal, sans, serif ou monospace La taille en y mettant l'un des objets suivants : new AbsoluteSizeSpan(int, boolean) qui reoit en paramtre la taille en pixels (px) si le 2me paramtre est false ou est omis et en pixels densit indpendante (dp) sinon new RelativeSizeSpan(float) qui reoit en paramtre l'chelle de taille (1.5F signifie 1 fois et demi plus gros) L'tirement horizontal en y mettant : new ScaleXSpan(float) qui reoit en paramtre l'chelle de taille (1.5F signifie tir 1 fois et demi en largeur) Le style du texte en y mettant : new StyleSpan(Typeface) qui reoit en paramtre le style qui est l'une des constantes : android.graphics.Typeface.BOLD android.graphics.Typeface.BOLD_ITALIC android.graphics.Typeface.ITALIC android.graphics.Typeface.NORMAL Le mode soulign en y mettant : new UnderlineSpan()

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

43

Le deuxime paramtre permet de dfinir le point (rang du caractre) partir duquel commence s'appliquer ce format Le troisime paramtre permet de dfinir le point (rang du caractre) partir duquel cesse de s'appliquer ce format Bien entendu plusieurs formats peuvent s'appliquer sur la mme partie de texte (par exemple : gras + soulign+ rouge sur fond vert)

Couleurs et ImagesLes couleurs sont reprsentes par un entier sur 32 bits (8 bits de transparence (FF=opaque, 0=totalement transparent), 8 bits rouge, 8 bits vert et 8 bits bleu). On peut manipuler ces codes l'aide de la classe Color

La classe Color d'Androidimport android.graphics.Color

Mthodes de la classe Color argb(int, int, int, int) renvoie le code de la couleur dfinie par les 4 paramtres (transparence, rouge, vert, bleu). Le 1er paramtre peut tre omis pour obtenir une couleur opaque. alpha(int) renvoie la transparence de la couleur dont le code est pass en paramtre red(int) renvoie la composante rouge de la couleur dont le code est pass en paramtre green(int) renvoie la composante verte de la couleur dont le code est pass en paramtre blue(int) renvoie la composante bleue de la couleur dont le code est pass en paramtre

Couleurs prdfiniesUn certain nombre de couleurs sont prdfinies en contantes dans la classe Color : Color.BLACK, Color.WHITE, Color.LTGRAY, Color.GRAY, Color.DKGRAY, Color.RED, Color.GREEN, Color.BLUE, Color.CYAN, Color.MAGENTA, Color.YELLOW et Color.TRANSPARENT

La classe Drawableimport android.graphics.drawable.Drawable Les images, quand elles sont rcupres dans les ressources, apparaissent sous la forme d'objets de la classe Drawable. C'est sous cette forme qu'elles peuvent tre utilises dans les divers lments d'interface (images de fond, images affiches dans des boutons ou des ImageView sparateurs de liste, ). Elles peuvent galement tre affiches dans un objet de classe Canvas par leur mthode draw(Canvas).

Les menusimport android.view.Menu import android.view.MenuItem import android.view.MenuInflater import android.view.ContextMenu import android.view.ContextMenuInfo Android propose 2 types de menus: Menu gnral associ l'interface d'une activit et qui apparat lorsque l'on utilise la touche "menu" du tlphone Menu contextuel li un lment d'interface qui apparat lorsque l'on touche longuement cet lment

Description en XML d'un menuLe fichier de description de menu doit tre plac dans res/menu (ce rpertoire n'est pas cr par Eclipse il faudra donc le faire). Structure du fichier XML :

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

44

A chaque lment de menu peut tre associe une icne et un texte. On peut, bien entendu ne mettre que l'un des deux. La cration de sous menus dans un item se fait comme suit :

Menu gnralCration du menuElle se fait dans la mthode onCreateOptionMenu(Menu) de l'activit partir du fichier xml de description sous la forme : public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.nom_du_fichier_xml_du_menu, menu); return true; }

Ractions aux choixElle se fait dans la mthode onOptionsItemSelected(MenuItem) de l'activit qui est appele lorsque l'utilisateur fait un choix dans un menu ou un sous menu. Cette mthode doit renvoyer un boolen true si l'vnement a t trait. Sa forme est celle d'un switch o l'on traite chaque item de menu n'ayant pas de sous menu et chaque item des sous menu : public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.nom_du_choix_1: // traitement du choix 1 return true; case R.id.nom_du_sous_choix_1: // traitement du sous choix 1 return true; default: return super.onOptionsItemSelected(item); } }

Menus contextuelsAssociationLe menu contextuel doit tre associ un lment d'interface. Ceci se fait lors de la cration de l'interface (dans onCreate) de la faon suivante : registerForContexMenu(element_associe_au_menu_contextuel);

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

45

Cration du menu contextuelLa cration se fait dans la mthode onCreateContextMenu sous la forme : public void onCreateContextMenu(ContextMenu menu, View element, ContextMenuInfo info) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.nom_du_fichier_xml_du_menu, menu); }

Ractions aux choixElle se fait dans la mthode onContextItemSelected(MenuItem) de l'activit qui est appele lorsque l'utilisateur fait un choix dans un menu contextuel. Cette mthode doit renvoyer un boolen true si l'vnement a t trait. Sa forme est celle d'un switch o l'on traite chaque item de menu n'ayant pas de sous menu et chaque item des sous menu : public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.nom_du_choix_1: // traitement du choix 1 return true; case R.id.nom_du_sous_choix_1: // traitement du sous choix 1 return true; default: return super.onContextItemSelected(item); } }

Communication entre activitsimport android.os.Bundle import android.content.Intent import android.net.Uri Une activit peut en lancer d'autres, leur passer des paramtres et en rcuprer des valeurs de retour.

Filtres d'intensionsIls permettent Android de savoir si une activit correspond un type d'appel. On peut associer de tels filtres toutes les activits d'une application.

Forme gnrale />

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

46

Lancer une activitSans attente de rponseDans le cas o l'activit lance est connue par le nom de sa classe : Intent demarre = new Intent(this, NomDeLaClasseDeLActiviteALancer.class); startActivity(demarre); Dans le cas o on laisse Android choisir l'activit lancer grce aux filtres d'intensions : Uri chemin = Uri.parse("http://www.google.fr"); Intent naviguer = new Intent(Intent.ACTION_VIEW, chemin); startActivity(naviguer); Remarque : on peut aussi crer un Intent sans prciser d'URI en omettant le second paramtre dans le constructeur de l'Intent. Pour ajouter des informations un Intent il existe les mthodes : addCategory(String) ajoute une catgorie setData(URI) dfinit une URI pour les donnes setDataAndType(URI, String) dfinit une URI et un type mime pour les donnes

Avec attente de rponseLe processus de lancement est le mme que prcdemment la seule diffrence porte sur la mthode utilise pour le lancement : startActivity est remplac par startActivityForResult. Lancement de l'activit B dans l'activit A : private static final int MON_CODE = 1; // code servant identifier lactivit qui rpond Intent demarre = new Intent(this, NomDeLaClasseDeLActiviteB.class); // ajouter les paramtres passs B dans lIntent demarre (voir plus loin) startActivityForResult(demarre, MON_CODE); // lancement de lactivit B Renvoi de rponse et terminaison de l'activit B : Intent intent_retour = new Intent(); // Prparer un Intent pour les valeurs de retour // Ajouter les valeurs de retour lIntent intent_retour (voir plus loin) setResult(code, intent_retour); // renvoyer un code de retour (entier : on peut utiliser les constantes RESULT_CANCELED et RESULT_OK) et lIntent de retour finish(); // terminer lactivit B Rcupration de la rponse de l'activit B dans l'activit A : protected void onActivityResult(int ident, int code_retour, Intent retour) { switch(ident) { case MON_CODE : // cest lactivit B qui a rpondu // rcupration des valeurs de retour contenues dans lIntent retour (voir ci-dessous) // traitement selon le code de retour contenu dans lentier code_retour return; } } Les valeurs de retour sont rcupres dans le dernier paramtre, selon leur type, par : boolean x = retour.getBooleanExtra("nom_de_la_valeur_de_retour_x") int y = retour.getIntExtra("nom_de_la_valeur_de_retour_y") boolean[] tab = retour.getBooleanArrayExtra("nom_de_la_valeur_de_retour_tab")

Dveloppement d'applications pour Android - M. Dalmau, IUT de Bayonne-Pays Basque

47

ATTENTION : tester le cas o retour serait null pour viter le plantage si on quite l'activit par le bouton de retour en arrire du tlphone plutt que normalement.

Passage de paramtres et de valeurs de retourLe passage des paramtres de A B ainsi que des valeurs de retour de B A se font par un Intent en utilisant sa mthode : putExtra(String, val) Le 1er paramtre est un nom (cl) qui permet d'identifier la valeur associe Le second paramtre est la valeur : o De type simple (boolean, byte, int, short, long, float, double, char) o Tableau de types simples o String o Tableau de Strings La rcupration des paramtres dans B se fait en rcuprant le Bundle qui les contient dans l'Intent : Bundle params = getIntent().