Professional Documents
Culture Documents
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.
Sommaire
Notion 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'activit
Cycle 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.
Manifeste
Une 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
La structure gnrale de ce fichier est la suivante : <?xml version="1.0" encoding="utf-8"?> <manifest> <uses-sdk /> <uses-permission /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> </activity> <service> <intent-filter> . . . </intent-filter> </service> <receiver> <intent-filter> . . . </intent-filter> </receiver> <provider> <grant-uri-permission /> </provider> <uses-library /> </application> </manifest>
Activits
Chaque activit constituant une application doit tre dcrite par une balise <activity>. La balise minimale de l'activit principale est de la forme : <activity android:name=".ClasseDeLActivite" android:label="nom_de_l_activite" android:icon="@drawable/nom_du_fichier_icone" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> La balise <activity> 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 <intent-filter> et si elle en a une on n'y rencontrera pas la proprit <action android:name="android.intent.action.MAIN" /> puisque ce n'est pas un programme principal. La balise <intent-filter> 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 <intent-filter> est la suivante: <intent-filter> <action android:name=nom_d_action_1 /> <action android:name=nom_d_action_N /> <category android:name=nom_de_categorie_1 /> <category android:name=nom_de_categorie_N />
<data android:mimeType=nom_de_type_mime android:scheme=protocole://hote:port/chemin /> /> </intent-filter> 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)
Permissions
Pour autoriser une application accder certaines ressources il faut lui en donner l'autorisation par une balise <uses-permission>. Les principales permissions sont :
Golocalisation (GPS)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Modification de paramtres
<uses-permission android:name="android.permission.SET_ORIENTATION" /> <uses-permission android:name="android.permission.SET_TIME_ZONE" /> <uses-permission android:name="android.permission.SET_WALLPAPER" />
Tlphonie
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PRIVILEGED" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
Audio
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Rseau
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
Access au matriel
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.BATTERY_STATS" />
Ressources
Rpertoires des ressources
Le 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.
<item>33000</item> </integer-array> <string name= titre>Un titre</string> <string-array name= planetes> <item>Mercure</item> <item>Venus</item> </string-array> <bool name=actif>true</bool> <dimen name taille>55px</dimen> </resources>
Utilisation de ressources
Les ressources peuvent tre utilises dans les fichiers XML (comme ceux de description d'interface) ou dans le code java.
Uri
Les Uri sont un moyen utilis pour dsigner des resources que ce soit sur Internet ou localement
Ressource locale
Pour 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
La classe File
import java.io.File C'est une classe java qui n'est pas propre Android, elle permet de manipuler des fichiers et des rpertoires
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
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
Interfaces
Mise en place d'une interface
Elle 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 :
<?xml version="1.0" encoding="utf-8"?> <! Commentaire --> <Classe_du_conteneur_principal xmlns:android="http://schemas.android.com/apk/res/android" proprits du conteneur principal > <Classe de conteneur ou d'lment d'interface proprits du conteneur ou de l'lment d'interface /> <Classe de conteneur ou d'lment d'interface proprits du conteneur ou de l'lment d'interface /> </Classe_du_conteneur_principal>
Lorsque l'un des lments est un conteneur, il faut indiquer les lments qu'il contient :
<Classe_de_conteneur proprits du conteneur (voir ci-dessous) > <Classe de conteneur ou d'lment d'interface proprits du conteneur ou de l'lment d'interface /> <Classe de conteneur ou d'lment d'interface proprits du conteneur ou de l'lment d'interface /> </Classe_du_conteneur>
10
AnalogClock
11
Les couleurs
Elles 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 View
Les 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.
Identifiant
Un 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.
12
Ascenseurs
Ces 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).
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
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
13
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 ViewGroup
Proprits 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)
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.
14
L'interface OnLongClickListener
import 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 OnKeyListener
import 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
15
La classe KeyEvent
import 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 OnTouchListener
import 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 MotionEvent
import 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 conteneurs
Les 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 FrameLayout
Placement en haut gauche. Si l'on place plusieurs lments ils se superposent, gnralement FrameLayout est utilis pour ne placer qu'un seul lment.
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.
16
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 LinearLayout
Place les lments les uns cot des autres horizontalement ou verticalement.
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 AbsoluteLayout
Place les lments selon des coordonnes.
17
Construction
AbsoluteLayout(Context) le paramtre est gnralement l'activit elle-mme
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 TableLayout
Dispose les lments en lignes et colonnes. Chaque ligne est dsigne dans le fichier XML par <TableRow> </TableRow>. 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.
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)).
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 RelativeLayout
Permet de placer des lments les uns relativement aux autres.
19
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 groupes
Les 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.
RadioGroup
Rserv 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).
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.
ListView
ListView 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.
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).
Construction
ListView(Context) le paramtre est gnralement l'activit elle-mme
21
Contenu
Le 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
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.
GridView
Fonctionne comme un ListView mais place les lments en tableau avec ascenseur vertical seulement si ncessaire.
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
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.
Construction
GridView(Context) le paramtre est gnralement l'activit elle-mme
Contenu
Pour 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
Evnements
Mmes mthodes que pour ListView
24
Gallery
Cette 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.
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; }
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)
Evnements
Mmes mthodes que pour ListView
Animation
setAnimationDuration(int) dfinit la dure (en ms) de l'animation de changement d'lment
26
android:layout_width="fill_parent" android:layout_height="fill_parent" android:unselectedAlpha="0.5" android:animationDuration="1000" /> </LinearLayout> Il ne contient qu'un LinearLayout ne contenant qu'une galerie. Il faut ensuite dfinir autant de fichiers xml que de pages chacun dcrivant l'interface d'une page de faon tout fait classique. Supposons que ces fichiers s'appellent page1.xml , page2.xml Ils sont placs dans res/layout. On va associer la galerie un gestionnaire de contenu qui cre les pages partir de ces fichiers : public class GaleriePagesActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Gallery galerie = (Gallery) findViewById(R.id.magalerie); galerie.setAdapter(new MonGestDeContenu()); } public class MonGestDeContenu extends BaseAdapter { private static final int nombreDePages = 2; // l'exemple a 2 pages public MonGestDeContenu() { } @Override public View getView(int position, View old, ViewGroup parent) { View vue = null; LayoutInflater decode = LayoutInflater.from(GaleriePagesActivity.this); switch (position) { case 0: vue = decode.inflate(R.layout.page1, parent, false); break; case 1 : vue = decode.inflate(R.layout.page2, parent, false); break; } return vue; } @Override public int getCount() { return nombreDePages; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } } }
27
Si l'on veut associer des couteurs d'vnements aux lments d'interface qui sont dans les pages, il faudra le faire lorsque la page est affiche c'est--dire dans chaque branche du switch du gestionnaire de contenu de la galerie. Ceci pourra se faire de la faon suivante (on suppose pour cet exemple avoir dans la premire page un bouton dont l'identifiant dans le fichier "page1.xml" est "mon_bouton") : public class MonGestDeContenu extends BaseAdapter { private static final nombreDePages = 2; private ActionBouton actionBouton = null; public MonGestDeContenu() { actionBouton = new ActionBouton(); } @Override public View getView(int position, View old, ViewGroup parent) { View vue = null; LayoutInflater decode = LayoutInflater.from(GalleriePagesActivity.this); switch (position) { case 0: vue = decode.inflate(R.layout.page1, parent, false); Button bouton = (Button) vue.findViewById(R.id.mon_bouton); bouton.setOnClickListener(actionBouton); break; case 1 : Il ne reste plus qu' crire la classe ActionBouton qui ragit aux vnements du bouton "mon_bouton"
28
Exemple : La description ci-dessous ne placera pas, comme on pourait s'y attendre, la case cocher droite de l'cran <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Essai placement" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|right" /> </LinearLayout> Pour obtenir le rsultat souhait il faut encapsuler la case cocher dans un FrameLayout : <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top|right" /> </FrameLayout> Pour un TableLayout le nombre de colonnes occupespar l'lment est dfini par : android:layout_span="s" (o s indique le nombre de colonnes (par dfaut 1)) Les marges externes sont dfinies par : 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
ImageView
Il s'agit simplement d'une zone dans laquelle s'affiche une image.
Contenu
android:src="couleur" pour dfinir une couleur ou ="@drawable/monimage" pour dfinir une image. L'image est place dans res/drawable/ et s'appelle monimage.x (o x est png, jpg, ou gif). Mthodes correspondantes : setImageBitmap, setImageDrawable, setImageResource
Dimensions
android:tint="couleur" pour dfinir une couleur qui teinte l'image android:adjustViewBounds="b" (o b vaut true ou false) false indique que la taille de la zone d'affichage correspond celle de l'image
29
Dans le cas o ce paramtre est true on prcise le comportement de l'image android:baselineAlignBottom="b" (o b vaut true ou false) indique si l'image est place en bas de la zone android:cropToPadding="b" (o b vaut true ou false) true indique que l'image sera coupe si elle est plus grande que la taille de la zone d'affichage android:scaleType="s" (o s peut prendre les valeurs : o matrix l'image n'est ni centre ni redimensionne o center l'image est centre mais non redimensionne o fitXY l'image est dforme pour occuper tout l'espace o fitStart l'image est cadre en haut gauche et redimensionne o fitCenter l'image est centre et redimensionne o fitEnd l'image est cadre en bas droite et redimensionne o centerCrop l'image est centre et redimensionne selon sa dimension minimale et non dforme, l'autre dimension pourra donc tre coupe o centerInside l'image est centre et redimensionne selon sa dimension maximale et non dforme; elle ne sera donc pas coupe Exemple de fichier XML : <ImageView android:id="@+id/image" android:src="@drawable/photo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" />
Construction
ImageView(Context) le paramtre est gnralement l'activit elle-mme
Aspect
getDrawable() renvoie l'image du bouton (objet de classe Drawable) setAlpha(int) dfinit la transparence (le paramtre est un rel entre 0 et 1) setImageBitmap(Bitmap) dfinit l'image (objet de classe Bitmap) setImageDrawable(Drawable) dfinit l'image (objet de classe Drawable) setImageResource(int) dfinit l'image par son identificateur setMaxHeight(int) dfinit la hauteur maximale en pixels setMaxWidth(int) dfinit la largeur maximale en pixels setScaleType(int) dfinit le positionnement de l'image. les valeurs possibles du paramtre sont : ImageView.ScaleType. MATRIX , CENTER , FIT_XY , FIT_START , FIT_CENTER , FIT_END , CENTER_CROP ou CENTER_INSIDE. Aprs avoir modifi le positionnement si on n'a pas chang l'image il faut appeler la mthode invalidate() de l'ImageView pour que ce soit pris en compte.
TextView
Affichage de texte a priori non ditable (pour du texte ditable utiliser EditView).
Contenu
android:text="texte afficher" android:hint="initial" dfinit le texte afficher quand la zone est vide
30
Dimensions
android:ems="x" (o est une valeur entire) dfinit la taille du texte en caractres android:maxEms="x" (o est une valeur entire) dfinit le nombre maximal de caractres des lignes du texte android:height="unit" android:maxHeight="unit" android:minHeight="unit" android:width="unit" android:maxWidth="unit" android:minWidth="unit"
Comportement
android:autoLink="a" (o a peut tre : none, web, email, phone, map ou all) indique si les liens de ce type apparaissant dans le texte sont automatiquement rendus cliquables. android:autoText="b" (o b vaut true ou false) valide ou pas le mode correction du texte android:capitalize="c" (o c peut tre : none, sentences, words, caracters) indique le type de saisies que le texte mmorise et peut re-proposer. android:digits="b" (o b vaut true ou false) true indique que la saisie n'accepte que du numrique android:numerics="x" (o x peut tre integer, signed, decimal) dfinit le mode de saisie numrique android:password="b" (o b vaut true ou false) si true lors de la saisie des points sont affichs android:phonenumber="b" (o b vaut true ou false) true indique que la saisie n'accepte que des numros de tlphone android:inputType="t" (o t peut tre : none, text, textCapCharacters, textCapWords, textCapSentences, textAutoCorrect, textAutoComplete, textMultiLine, textUri, textEmailAddress, textEmailSubject, textShortMessage, textLongMessage, textPersonName, textPostalAddress, textPassword, textVisiblePassword, textWebEditText, textFilter, textPhonetic, textWebEmailAddress, textWebPassword, number, numberDecimal, numberPassword, phone, datetime, date ou time) dfinit le mode de saisie.
Affichage
android:cursorVisible="b" (o b vaut true ou false) rend visible ou non le curseur android:editable="b" (o b vaut true ou false) autorise ou pas la modification du texte android:ellipsize="e" (o e peut tre : none, start, middle, end, marquee) dfinit le mode de csure du texte
31
android:linksClickable="b" (o b vaut true ou false) rend ou pas les liens cliquables android:textIsSelectable="b" (o b vaut true ou false) autorise ou interdit le slection dans le texte
Couleurs et images
android:textColor="couleur" pour dfinir la couleur du texte android:textColorHighlight="couleur" pour dfinir la couleur de surlignage du texte android:textColorHint="couleur" pour dfinir la couleur du texte par dfaut android:textColorLink="couleur" pour dfinir la couleur des liens dans le texte android:drawableBottom="couleur" pour dfinir la couleur de fond du texte ou ="@drawable/monimage" pour dfinir une image de fond au texte. L'image est place dans res/drawable/ et s'appelle monimage.x (o x est png, jpg, ou gif) android:shadowColor="couleur" pour dfinir la couleur d'ombrage du texte android:shadowDx="x" (o est une valeur relle) dfinit le dcalage en X de l'ombre (voir shadowRadius) android:shadowDy="x" (o est une valeur relle) dfinit le dcalage en Y de l'ombre (voir shadowRadius) android:shadowRadius="x" (o est une valeur relle) dfinit l'paisseur de l'ombre (ATTENTION : par dfaut c'est 0 donc il n'y a pas d'ombre)
Exemple de fichier XML : <TextView android:id="@+id/untexte" android:text="Contenu du texte" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Construction
TextView(Context) le paramtre est gnralement l'activit elle-mme
Manipulation du texte
getText() renvoie le texte contenu dans le TextView sous forme d'un objet de classe Editable que l'on peut transformer en String par sa mthode toString() cd par : getText().toString() setText(CharSequence) dfinit le texte du TextView append(CharSequence) ajoute du texte au TextView getLineCount() renvoie le nombre de lignes du texte contenu dans le TextView length() renvoie la longueur du texte contenu dans le TextView getSelectionStart() renvoie la position de dbut du texte slectionn getSelectionEnd() renvoie la position de fin du texte slectionn hasSelection() indique s'il y a ou pas du texte slectionn (true si oui, false si non)
Aspect
setCursorVisible(boolean) rend le curseur visible (true) ou invisible (false) setEnabled(boolean) rend le TextView actif ou pas getCurrentTextColor() renvoie la couleur actuelle du texte normal setTextColor(int) dfinit la couleur du texte setHighlightColor(int) dfinit la couleur du texte surlign setHint(CharSequence) dfinit le texte afficher quand la zone est vide
32
Evnements
addTextChangedListener(TextWatcher) pour associer un couteur d'vnements aux modifications du texte. L'interface TextWatcher possde les mthodes surcharger suivantes : o beforeTextChanged(CharSequence, int, int, int) appele avant la modification du texte o onTextChanged(CharSequence, int, int, int) appele aprs la modification du texte Pour ces 2 mthodes les paramtres sont : o Le texte (avant ou aprs sa modification) o Le point de dpart de la modification (rang du caractre) o Le nombre de caractres remplacs o Le nombre de caractres de remplacement setOnEditorActionListener(TextView.OnEditorActionListener) pour associer un couteur d'vnements aux actions. L'interface TextView.OnEditorActionListener possde la mthode surcharger suivante : o onEditorAction(TextView, int, KeyEvent) appele lorsqu'une action est effectue (en particulier quand on tape la touche Entre). Cette mthode doit retourner un boolen (true si l'vnement a t trait) Les paramtres sont : o Le TextView lui-mme o Un identificateur d'action ou la valeur EditorInfo.IME_NULL lorsque l'action provient de la touche Entre o L'vnement clavier lorsque l'action provient de la touche Entre setKeyListener(KeyListener) pour associer un couteur d'vnements au clavier. L'interface KeyListener possde les mthodes surcharger suivantes : o onKeyDown(View, Editable, int, KeyEvent) appele lorsqu'une touche est appuye o onKeyUp(View, Editable, int, KeyEvent) appele lorsqu'une touche est lche Pour ces 2 mthodes les paramtres sont : o Le TextView lui-mme o Le texte o Le code de la touche (voir OnKeyListener) o L'vnement clavier
EditText
C'est la mme chose que TextView mais pour du texte ditable Exemple de fichier XML : <EditText android:id="@+id/texte" android:text="contenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="serif" android:phoneNumber="true" />
Construction
EditText(Context) le paramtre est gnralement l'activit elle-mme
Manipulation du texte
getText() renvoie le texte contenu dans le EditText
33
selectAll() slectionne tout le texte setSelection(int start, int stop) slectionne le texte entre les positions passes en paramtre (dbut, fin).
AutoCompleteTextView
Texte ditable proposant de la compltion. Possde les mmes paramtres XML que EditText plus : android:completionHint="texte" texte affich en titre du menu droulant android:completionThreshold="x" (o x est une valeur entire) dfinit le nombre de caractres taper avant que la compltion n'entre en action. android:dropDownHeight="unit" on peut aussi utiliser les constantes fill_parent et wrap_content, dfinit la hauteur du menu droulant android:dropDownWidth="unit" on peut aussi utiliser les constantes fill_parent et wrap_content, dfinit la largeur du menu droulant android:dropDownHorizontalOffset="unit" dcalage horizontal du menu droulant android:dropDownVerticalOffset="unit" dcalage vertical du menu droulant
Construction
AutoCompleteTextView(Context) le paramtre est gnralement l'activit elle-mme
Aspect et contenu
showDropDown() montre la liste droulante dismissDropDown()cache la liste droulante getListSelection() renvoie le rang de la proposition choisie setListSelection(int) choisit une proposition par son rang setAdapter(ArrayAdapter) Permet de remplir la liste de propositions. La classe ArrayAdapter est dcrite dans ListView. setCompletionHint(CharSequence) dfinit le texte affich en titre du menu droulant
Evnements
setOnItemClickListener(AdapterView.OnItemClickListener) associe un couteur d'vnements au clic sur un lment propos. 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. setOnItemSelectedListener(AdapterView.OnItemSelectedListener) associe un couteur d'vnements la slection d'un lment propos. 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.
Button
Mmes paramtres XML que TextView Exemple de fichier XML : <Button android:id="@+id/compte"
34
Construction
Button(Context) le paramtre est gnralement l'activit elle-mme
ImageButton
Mmes paramtres XML que ImageView Exemple de fichier XML : <ImageButton android:id="@+id/boutonloupe" android:src="@drawable/loupe" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Construction
ImageButton(Context) le paramtre est gnralement l'activit elle-mme
ToggleButton
Mmes paramtres XML que TextView plus : android:disabledAlpha="x" (o est une valeur relle entre 0 et 1) dfinit la transparence applique lorsque le bouton est inactif android:textOff="txt" dfinit le texte quand le bouton n'est pas allum android:textOn="txt" dfinit le texte quand le bouton n'est pas allum android:checked="b" (o b vaut true ou false) place le bouton en position allum ou teint
Construction
ToggleButton(Context) le paramtre est gnralement l'activit elle-mme
Etat
isChecked() indique si le bouton est allum ou teint (true/false) setChecked(boolean) positionne le bouton (true = allum, false = teint) toggle() change l'tat du bouton
Aspect
getTextOff() renvoie le texte associ au bouton quand il n'est pas allum getTextOn() renvoie le texte associ au bouton quand il est allum setTextOff(CharSequence) dfinit le texte associ au bouton quand il n'est pas allum setTextOn(CharSequence) dfinit le texte associ au bouton quand il est allum
35
CheckBox
Mmes paramtres XML que TextView plus : android:checked="b" o b vaut true ou false coche ou dcoche la case au dpart Exemple de fichier XML : <CheckBox android:id="@+id/case" android:text="Checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" />
Construction
Checkbox(Context) le paramtre est gnralement l'activit elle-mme
Etat
isChecked() renvoie true si la case est coche setChecked(boolean) coche (true) ou dcoche (false) la case toggle() change l'tat de la case
RadioButton
Mmes paramtres XML que TextView plus : android:checked="b" o b vaut true ou false coche ou dcoche le bouton au dpart Exemple de fichier XML : <RadioButton android:id="@+id/gauche" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Left" android:checked="false" android:layout_gravity="left" />
Construction
RadioButton(Context) le paramtre est gnralement l'activit elle-mme
Etat
isChecked() renvoie true si la case est coche setChecked(boolean) coche (true) ou dcoche (false) la case toggle() change l'tat de la case
Spinner
Propose une liste de choix. Le choix actuellement slectionn est affich, la flche permet de faire apparatre les autres possibilits sous la forme d'un RadioGroup.
36
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 de choix. android:prompt="texte" dfinit le titre de la fentre qui s'ouvre lorsque l'on fait un choix android:entries="@array/maliste" dfinit le contenu de la liste partir d'une ressource de type tableau de chanes de caractres mise dans un fichier xml plac dans res/values/ sous la forme : <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="maliste"> <item>Mercure</item> <item>Venus</item> <item>Terre</item> <item>Mars</item> </string-array> </resources>
Construction
Spinner(Context) le paramtre est gnralement l'activit elle-mme
Contenu
setAdapter(ArrayAdapter) Permet de remplir la liste de choix. La faon de procder est dcrite dans ListView.
Slection
getCount() renvoie le nombre de choix setSelection(int) slectionne un lment de la liste par son rang ( partir de 0)
Evnements
setOnItemSelectedListener(AdapterView.OnItemSelectedListener) associe un couteur d'vnements la slection d'une choix. La mthode onItemSelected (AdapterView<?>, View, int, long) de l'interface AdapterView.OnItemSelectListener est surcharge pour traiter l'vnement. 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.
DatePicker
Mmes paramtres XML que FrameLayout plus : android:startYear="x" o x est l'anne de dpart du calendrier affich android:endYear="x" o x est l'anne de fin du calendrier affich android:minDate="x" o x est la date de dpart du calendrier affich sous la forme mm/jj/aaaa android:maxDate="x" o x est la date de fin du calendrier affich sous la forme mm/jj/aaaa
Exemple de fichier XML : <DatePicker android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:startYear="2000" android:endYear="2020" />
37
Construction
DatePicker(Context) le paramtre est gnralement l'activit elle-mme
Contenu
getDayOfMonth() renvoie le jour affich (1 31) getMonth() renvoie le mois affich (1 12) getYear() renvoie l'anne affich updateDate(int, int, int) met jour la date affiche, les paramtres sont dans l'ordre : anne, mois, jour) isEnabled() indique si le DatePicker est actif ou pas setEnabled(boolean) rend le DatePicker actif ou pas
TimePicker
Mmes paramtres XML que FrameLayout Exemple de fichier XML : <TimePicker android:id="@+id/temps" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Construction
TimePicker(Context) le paramtre est gnralement l'activit elle-mme
Contenu
getCurrentHour() renvoie l'heure affiche getCurrentMinute() renvoie les minutes affiches setCurrentHour(Integer) dfinit l'heure affiche setCurrentMinute() dfinit les minutes affiches is24HourView() indique si l'affichage est fait sur 12 ou 24 heures setIs24HourView(Boolean) dfinit le mode d'affichage (true en 24 heures, false en 12 heures) isEnabled() indique si le TimePicker est actif ou pas setEnabled(boolean) rend le TimePicker actif ou pas
Evnements
setOnTimeChangedListener(TimePicker.OnTimeChangedListener) dfinit un couteur d'vnements lorsqu'une heure est choisie. La mthode onTimeChanged(TimePicker,
38
int, int)de l'interface TimePicker.OnTimeChangedListener doit tre surcharge pour traiter l'vnement. Ses paramtres sont : le TimePicker lui-mme, l'heure choisie et la minute choisie.
ProgressBar
Deux comportements possibles selon que l'on connat le taux de progression ou pas. Dans le premier cas on peut faire voluer la progression, dans le second on a une animation. Deux formes sont possibles (barre verticale ou cercle).
Aspect
style="?android:attr/s" o s peut tre : o progressBarStyleHorizontal une barre horizontale (cas dtermin) o progressBarStyleSmall un cercle de petite taille (cas indtermin) o progressBarStyleLarge un cercle de grande taille (cas indtermin)
Exemple de fichier XML : <ProgressBar android:id="@+id/progres" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="300px" android:minHeight="30px" android:max="100" android:progress="30" android:secondaryProgress="40" android:indeterminate="false" style="?android:attr/progressBarStyleHorizontal" />
Construction
ProgressBar(Context) le paramtre est gnralement l'activit elle-mme
39
Valeurs
getMax() renvoie la valeur maximale setMax(int) dfinit valeur maximale getProgress() renvoie la valeur actuelle setProgress(int) dfinit la valeur actuelle getSecondaryProgress() renvoie la valeur secondaire actuelle setSecondaryProgress(int) dfinit la valeur secondaire actuelle incrementProgressBy(int) modifie le pas de progression par ajout du paramtre incrementSecondaryProgressBy(int) modifie le pas de progression de la valeurs secondaire par ajout du paramtre
Aspect
isIndeterminate() indique si le ProgressBar est en mode indtermin (true) ou pas setIndeterminate(boolean) met le ProgressBar est en mode indtermin (true) ou pas setVisibility(int) dfinit la visibilit. Le paramtre peut tre : VISIBLE, INVISIBLE, ou GONE.
SeekBar
C'est un ProgressBar sous forme de barre horizontale dot d'un curseur permettant de modifier la valeur. Mmes paramtres XML que ProgressBar mais l'aspect ne peut pas tre modifi.
Construction
SeekBar(Context) le paramtre est gnralement l'activit elle-mme On trouve les mmes mthodes que dans la classe ProgressBar puisque SeekBar en hrite mais on peut grer les vnements de modification de la valeur :
Evnements
setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener) permet d'associer un couteur d'vnements aux modifications de la valeur. Les mthodes que l'on surcharge dans l'interface SeekBar.OnSeekBarChangeListener sont : o onProgressChanged(SeekBar, int, boolean) le curseur a t dplac. Le 2me paramtre est la nouvelle valeur, le dernier paramtre vaut true si la valeur a t modifie par l'utilisateur. o onStartTrackingTouch(SeekBar) dbut du dplacement o onStopTrackingTouch(SeekBar) fin du dplacement Remarque : pour toutes ces mthodes le 1er paramtre est le SeekBar lui-mme
RatingBar
Mmes paramtres XML que ProgressBar plus : android:isIndicator="b" (o b vaut true ou false) indique si l'utilisateur peut modifier la valeur ou pas (true= non modifiable) android:numStars="x" (o est une valeur entire) dfinit le nombre d'toiles affiches android:rating="x" (o est une valeur relle) dfinit la position initiale android:stepSize="x" (o est une valeur relle) dfinit le pas de progression (on peut cocher des toiles par exemple)
40
Construction
RatingBar(Context) le paramtre est gnralement l'activit elle-mme
Valeurs
getNumStars() renvoie le nombre d'toiles setNumStars(int) dfinit le nombre d'toiles getRating() renvoie la valeur actuelle (rel) setRating(float) dfinit la valeur actuelle getStepSize() renvoie le pas de progression (rel) setStepSize(float) dfinit le pas de progression isIndicator() indique si l'utilisateur peut modifier la valeur ou pas (true= non modifiable) setIsIndicator(boolean) dfinit si l'utilisateur peut modifier la valeur ou pas (true= non modifiable)
Evnements
setOnRatingBarChangeListener(RatingBar.OnRatingBarChangeListener) associe un couteur d'vnements aux modifications. L'interface RatingBar.OnRatingBarChangeListener possde une mthode onRatingChanged(RatingBar, float, boolean) qui doit tre surcharge pour traiter les vnements. Le 1er paramtre est la barre, le 2me est la valeur actuelle et le 3me vaut true si la valeur a t modifie par l'utilisateur (false si c'est par programme).
Exemple de fichier XML : <RatingBar android:id="@+id/vote" android:layout_width="wrap_content" android:layout_height="wrap_content" android:isIndicator="false" android:numStars="5" android:stepSize="0.1" android:rating="3.5" />
AnalogClock
Exemple de fichier XML : <AnalogClock android:id="@+id/horloge" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Construction
AnalogClock(Context) le paramtre est gnralement l'activit elle-mme
DigitalClock
Mmes paramtres XML que TextView Exemple de fichier XML : <DigitalClock android:id="@+id/digitalclock" android:layout_width="wrap_content"
41
android:layout_height="wrap_content" />
Construction
DigitalClock(Context) le paramtre est gnralement l'activit elle-mme
Chronometer
C'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)
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.
Notifications
Android 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 Toast
Mthodes de la classe Toast
android.widget.Toast
42
Textes Formats
Les 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.
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()
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 Images
Les 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
Couleurs prdfinies
Un 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 Drawable
import 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 menus
import 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
44
<item android:id="@+id/nom_du_choix_1" android:icon="@drawable/image_du_choix_1" android:title="@string/texte_du_choix_1" /> <item /> </menu> 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 : <item android:id="@+id/nom_du_choix_N" android:icon="@drawable/image_du_choix_N" android:title="@string/texte_du_choix_N"> <menu> <item android:id="@+id/nom_du_sous_choix_1" android:title="texte_du_sous_choix_1" /> </menu> </item>
Menu gnral
Cration du menu
Elle 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; }
Menus contextuels
Association
Le 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);
45
Filtres d'intensions
Ils 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
<activity android:name=".Nom_De_La_Classe_De_L_Activit" > <intent-filter> <action android:name=nom_d_action_1 /> <action android:name=nom_d_action_N /> <category android:name=nom_de_categorie_1 /> <category android:name=nom_de_categorie_N /> <data android:mimeType=nom_de_type_mime android:scheme=protocole://hote:port/chemin /> /> </intent-filter> <intent-filter>
46
</intent-filter> </activity>
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.
Utilisation du GPS
import android.location.LocationManager <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> On utilise la classe LocationManager dont une instance est obtenue par : LocationManager geoloc = (LocationManager)getSystemService(Context.LOCATION_SERVICE); On lui associe un couteur d'vnements qui recevra les informations de golocalisation par la mthode : geoloc.requestLocationUpdates(String, long, float, LocationListener) Le premier paramtre indique le moyen utilis pour la golocalisation, il peut en particulier prendre les valeurs : o LocationManager.GPS_PROVIDER pour utiliser le GPS o LocationManager.NETWORK_PROVIDER pour utiliser la triangulation des antennes rseau
48
Le deuxime paramtre est un entier qui indique l'intervalle minimal de temps (en ms) entre les notifications. On peut le mettre 0 pour obtenir l'intervalle minimal possible Le troisime paramtre est un rel qui indique la distance minimale (en mtres) de dplacement pour provoquer une nouvelle notification. On peut le mettre 0 pour obtenir l'intervalle minimal possible. Le dernier paramtre est l'couteur d'vnements qui est un objet d'une classe dfinir par hritage de LocationListener et par surcharge des mthodes : o public void onLocationChanged(Location) qui est excute chaque notification o public void onProviderDisabled(String) qui est excute si le fournisseur de localisation est dsactiv par l'utilisateur. Le paramtre est le nom de ce fournisseur. o public void onProviderEnabled(String) qui est excute si le fournisseur de localisation est activ par l'utilisateur. Le paramtre est le nom de ce fournisseur. o public void onStatusChanged(String, int, Bundle) qui est excute si l'tat du fournisseur de localisation change (redevient actif aprs une interruption ). Le premier paramtre est le nom de ce fournisseur, le deuxime indique son nouvel tat (OUT_OF_SERVICE, AVAILABLE ou TEMPORARILY_UNAVAILABLE), le dernier paramtre contient des information supplmentaires sur ce fournisseur. C'est surtout la premire mthode qui est utile (les autres peuvent tre crites vides). Le paramtre de cette mthode est un objet de classe Localisation qui contient la position. Ses principales mthodes sont : o getLatitude() qui renvoie un rel correspondant la latitude o getLongitude() qui renvoie un rel correspondant la longitude o getAltitude() qui renvoie un rel correspondant l'altitude (en mtres) o getAccuracy() qui renvoie un rel correspondant la prcision de la localisation (en mtres) o distanceTo(Location) qui renvoie un rel reprsentant en mtres la distance entre la position actuelle et celle passe en paramtre.
Appareil photo
import android.hardware.Camera import android.view.SurfaceView import android.view.SurfaceHolder import android.view.SurfaceHolder.Callback <uses-permission android:name="android.permission.CAMERA" />
Prvisualisation
L'appareil photo ne peut fonctionner que s'il dispose d'une zone d'cran pour prvisualiser la photo qu'il va prendre. On va donc lui associer un lment d'interface de classe SurfaceView qui sera dclar dans le fichier xml de description de l'interface par : <SurfaceView android:name="@id/visualisation" /> Auquel on associera un couteur d'vnements pour grer la prvisualisation par : SurfaceView ecran = (SurfaceView)findViewById(R.id.visualisation); SurfaceHolder surface = ecran.getHolder(); surface.addCallback(new GestionPrevisualisation()); surface.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); Et on crera cet couteur d'vnements par : private class GestionPrevisualisation implements
49
SurfaceHolder.Callback { public void surfaceCreated(SurfaceHolder surf) { photo = Camera.open(); try { photo.setPreviewDisplay(surf); } catch (IOException ioe) { // erreur lors de l'association de la prvisualisation photo.stopPreview(); photo.release(); } } public void surfaceChanged(SurfaceHolder surf, int format, int largeur, int hauteur) { } public void surfaceDestroyed(SurfaceHolder holder) { if (photo != null) { photo.stopPreview(); photo.release(); } } }
Prise de photo
A chaque prise de photo on doit lancer la prvisualisation et faire la photo en associant un couteur d'vnement qui rcuprera l'image par : photo.startPreview(); photo.takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback); Les paramtres de la mthode takePicture sont les suivants : Les deux premiers permettent d'associer des couteurs d'vnements pour l'instatnt de prise de vue et pour la capture d'image non compresse (raw). Si l'on souhaite seulement rcuprer la photo en jpeg on met null dans ces paramtres. Le dernier est un objet d'une classe qui implmente l'interface PictureCallback et dont on surcharge la mthode onPictureTaken qui sera excute lorsque la photo est disponible en jpeg. Cette mthode reoit deux paramtres : o un tableau d'octets (byte[]) contenant l'image au format jpeg o l'appareil photo lui-mme (objet de classe Camera)
Affichage de photo
import android.graphics.drawable.BitmapDrawable import android.graphics.BitmapFactory import android.graphics.BitmapFactory.Options On peut transformer le tableau d'octets reu en paramtre de onPictureTaken en objet de classe BitmapDrawable qui hrite de Drawable par le code suivant : BitmapFactory.Options options = new BitmapFactory.Options(); options.inPurgeable = true; // pour librer la mmoire prise par l'image options.inSampleSize = x; // pour rduire l'image dans un rapport 1/x BitmapDrawable image = new BitmapDrawable( BitmapFactory.decodeByteArray(photo, 0, photo.length, options));
50
Vibreur
import android.os.Vibrator <uses-permission android:name="android.permission.VIBRATE" /> Pour accder au vibreur on utilise la classe Vibrator dont une instance est obtenue par : Vibrator vibreur = (Vibrator)getSystemService(Context.Vibrator_SERVICE); Puis on peut faire vibrer le tlphone pour une dure donne par la mthode : vibreur.vibrate(int) o le paramtre est la dure de vibration en ms.
Capteurs
import android.hardware.Sensor import android.hardware.SensorManager import android.hardware.SensorEvent Les types de capteurs disponibles sont les suivants (selon le modle certains capteurs peuvent ne pas tre disponibles) : Sensor.TYPE_ACCELEROMETER
Pour accder un capteur on utilise la classe SensorManager dont une instance est obtenue par : SensorManager gestionnaireCapteurs = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Puis on rcupre un capteur particulier par : Sensor monCapteur = gestionnaireCapteurs.getDefaultSensor(type_de_capteur); Le paramtre type_de_capteur est l'un des types indiqus ci-dessus. On lui associe un couteur d'vnements par la mthode : gestionnaireCapteurs.registerListener(SensorEventListener, Sensor, int) Le premier paramtre est l'couteur d'vnements qui est un objet d'une classe dfinir par implmentation de l'interface SensorEventListener et par surcharge des mthodes : o void onSensorChanged(SensorEvent) qui est excute chaque fois que le capteur effectue une nouvelle mesure. Le paramtre permet de rcuprer les valeurs par values.clone() qui renvoie un tableau de rels contenant les mesures (voir ci-dessous). o void onAccuracyChanged(Sensor, int) qui est excute si la prcision du capteur change. Le premier paramtre est le capteur dont la prcision a chang, le second indique la nouvelle prcision. Le deuxime paramtre est le capteur auquel on associe l'couteur d'vnements. Le dernier paramtre est le rythme de mesure (en microsecondes) ou l'une des valeurs prdfinies suivantes : SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, ou SENSOR_DELAY_FASTEST. SENSOR_DELAY_UI correspond la valeur la plus adquate pour de l'interface tandis que SENSOR_DELAY_GAME correspond la valeur la plus adquate pour des jeux.
51
On peut supprimer un couteur associ un capteur par : gestionnaireCapteurs.unregisterListener(SensorEventListener, Sensor) le premier paramtre est l'couteur d'vnements, le deuxime paramtre est le capteur auquel tait associ cet couteur d'vnements. Le tableau de valeurs rcupr par la mthode values.clone() contient 1 ou 3 valeurs qui doivent tre interprtes selon le type de capteur (sa taille est toujours de 3 mais certaines valeurs ne sont pas significatives) :
valeurs 3 valeurs : acclration en X, en Y et en Z 3 valeurs : gravitation en X, en Y et en Z 3 valeurs : vitesse angulaire en X, en Y et en Z 1 valeur : luminosit 3 valeurs : champ magntique en X, en Y et en Z 3 valeurs : angle par rapport au nord rotation par rapport l'axe X rotation par rapport l'axe X 1 valeur : pression atmosphrique 1 valeur : distance capteur/objet (mesur par IR) 1 valeur : temprature
psi 6894,76 Pa cm C
(1) : sur certains modles le capteur de proximit se contente de dtecter une prsence. La valeur mesure n'st que 0 ou la valeur maximale (gnralement 10 cm).
Le multimdia
Android peut utiliser de nombreux formats audio et vido. Pour le son : 3gp , mp3 , mp4 , ogg , mid et wav Pour la vido : 3gp et mp4
Jouer un son
import android.media.MediaPlayer Le fichier contenant le son doit tre plac dans le rpertoire res/raw. Il suffit alors de crer un lecteur audio par : MediaPlayer lecteur = MediaPlayer.create(Context, int) 1. Le premier paramtre est l'activit elle-mme 2. Le second paramtre est l'identificateur du fichier son obtenu par : R.raw.nom_du_fichier_son Les oprations possibles sont alors : lecteur.start() pour jouer le son lecteur.pause() pour suspendre le son, il sera repris par start() lecteur.stop() pour arrter le son Pour rejouer un son arrt ou termin il faut faire les 3 oprations suivantes : lecteur.reset(); lecteur.prepare(); lecteur.start();
52
La classe MediaPlayer
Les principales mthodes de MediaPlayer sont :
Configuration
prepare() initialisation du player release() libre les ressources du player ( faire dans la mthode onDestroy de l'activit) reset() rinitialisation du player setDataSource(String) dfinit le mdia par un chemin de fichier ou une URL setDataSource(Context, Uri) dfinit le mdia par une Uri, le premier paramtre est l'activit, le second l'Uri dsignant le mdia. setLooping(boolean) met le player en mode boucle setVolume(float, float) dfinit le volume (le 1er paramtre est la voie gauche, le second la voie droite)
Controle
pause() met en pause seekTo(int) dplacement dans le mdia en ms (en + ou en -) start() lancement stop() arrt
Etat
getCurrentPosition() renvoie la position actuelle dans le mdia (en ms) getDuration() renvoie la dure du mdia (en ms) isPlaying() renvoie true si le media est en cours isLoopPlaying() renvoie true si le media est en mode boucle
Evnements
setOnCompletionListener(MediaPlayer.OnCompletionListener) associe un couteur d'vnements dont la mthode onCompletion(MediaPlayer) sera appele lorsque le mdia se termine setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener) associe un couteur d'vnements dont la mthode onBufferingUpdate(MediaPlayer, int) est appele lors de la mise jour du buffer. Le second paramtre est le pourcentage de remplissage du buffer. setOnPreparedListener(MediaPlayer.OnPreparedListener) associe un couteur d'vnements dont la mthode onPrepared(MediaPlayer) est appele lorsque le MediaPlayer est prt. setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener) associe un couteur d'vnements dont la mthode onSeekComplete(MediaPlayer) est appele lorsque dplacement dans le mdia est termin.
53
<VideoView android:id="@+id/ecran_video" android:layout_width="fill-parent" android:layout_height="fill-parent" /> Le chemin d'accs la vido est dcrit par une Uri : Uri chemin = Uri.parse("android.resource://paquetage_de_l_application/" +R.raw.nom_du_fichier_video); On va ensuite associer ce mdia la zone d'affichage par : VideoView lecteur = (VideoView)findViewById(R.id.ecranVideo); lecteur.setVideoURI(chemin); lecteur.requestFocus();
La classe VideoView
Les principales mthodes de VideoView sont :
Configuration
setMediaController(MediaController) associe un contrtleur de mdia qui apparatra par un clic long sur la vido et affiche les boutons de contrle. setVideoPath(String) dfinit le mdia par un chemin de fichier setVideoURI(Uri) dfinit le mdia par une Uri
Controle
start() lancement pause() mise en pause, reprise par start() seekTo(int) dplacemant dans le mdia, le paramtre est un temps en ms partir du dbut stopPlayback() arrt dfinitif ne sera pas relanc par start()
Etat
canPause() renvoie true si le media peut tre mis en pause canSeekBackward() renvoie true si le media peut tre recul canSeekForward() renvoie true si le media peut tre avanc getBufferPercentage() renvoie le pourcentage d'occupation du buffer de mdia getCurrentPosition() renvoie la position actuelle dans le mdia (en ms) getDuration() renvoie la dure du mdia (en ms) isPlaying() renvoie true si le media est en cours
Evnements
setOnCompletionListener(MediaPlayer.OnCompletionListener) associe un couteur d'vnements dont la mthode onCompletion(MediaPlayer) sera appele lorsque le mdia se termine.
Synthse de parole
import android.speech.tts.TextToSpeech import android.speech.tts.TextToSpeech.OnInitListener Android permet de lire haute voix un texte par synthse de parole. Il faut, bien entendu, que le synthtiseur connaisse la langue du texte. On peut installer des applications permettant d'ajouter des langues. Pour crer et prparer le synthtiseur : parle = new TextToSpeech(this, new SynthPret()); Pour attendre que le synthtiseur soit prt on utilise l'couteur d'vnements qui lui a t associ la cration. Cet couteur peut se contenter de positionner la langue quand le synthtiseur est prt. Son code est le suivant :
54
private class SynthPret implements TextToSpeech.OnInitListener { public void onInit(int status) { if (status == TextToSpeech.SUCCESS){ parle.setLanguage(Locale.FRANCE); // langue } } } Autres rglages : setSpeechRate(float) permet de rgler la vitesse de synthse (1 normal, <1 plus lent, >1 plus rapide) setPitch(float) permet de rgler la tonalit (1 normal, <1 plus grave, >1 plus aigu) Pour synthtiser un texte : String message = new String("texte a dire"); parle.speak(message, TextToSpeech.QUEUE_FLUSH, null); Pour ajouter du texte synthtiser pendant la synthse : String ajout = new String("texte a ajouter"); parle.speak(ajout, TextToSpeech.QUEUE_ADD, null); Pour arrter la synthse de son : parle.stop(); // arrt de la synthse Pour arrter le synthtiseur de son : parle.shutdown(); // arrt du synthtiseur On met gnralement ceci dans la mthode onDestroy de l'activit : public void onDestroy() { if (parle != null) { parle.stop(); parle.shutdown(); } super.onDestroy(); }
Internet
import java.net.URL import java.io.InputStreamReader import java.io.BufferedReader import java.io.BufferedInputStream import java.net.HttpURLConnection <uses-permisson android:name="android.permission.INTERNET" />
55
56
La classe Geocoder
import android.location.Geocoder import java.util.Locale import java.util.List import android.location.Address
Construction
Geocoder(Context, Locale) le premier paramtre est gnralement l'activit elle-mme. Le second paramtre indique la zone gographique concerne, il peut prendre les valeurs (Locale.FRANCE, Locale.CANADA, Locale.UK, Locale.US ). Ce dernier paramtre peut tre omis si l'on ne souhaite pas limiter la localisation.
Recherches
Toutes ces mthodes renvoient une liste (classe List de java) contenant des objets de classe Address (ATTENTION : cette liste peut tre vide si la recherche ne donne aucun rsultat) : getFromLocation(double, double, int) renvoie les adresses connues proches du point dfini par ses coordonnes gographiques passes par les 2 premier paramtres (latitude et longitude exprimes en degrs). Le dernier paramtre permet de limiter la taille de cette liste. getFromLocationName(String, int) renvoie les adresses connues proches du point dfini par le nom pass en premier paramtre (c'est une chane du type "3 Alle du parc Montaury, 64600, Anglet"). Le second paramtre permet de limiter la taille de cette liste. getFromLocationName(String, int, double, double, double, double) cette mthode fonctionne comme la prcdente mais permet de limiter la zone de recherche un rectangle. Les 3me et 4me paramtres indiquent la longitude et la latitude du coin infrieur gauche de ce rectangle tandis que les 5me et 6me paramtres en indiquent la longitude et la latitude du coin suprieur droit.
La classe Address
import android.location.Address Un objet de classe Address correspond une localisation gographique et contient des chanes de caractres correspondant aux lignes d'adresse de cette localisation (voir exemple ci-dessous).
Construction
Address(Locale) le paramtre indique la zone gographique concerne, il peut prendre les valeurs (Locale.FRANCE, Locale.CANADA, Locale.UK, Locale.US ). Ce dernier paramtre peut tre omis si l'on ne souhaite pas limiter la localisation.
Contenu
getLatitude() renvoie la latitude en degrs (rel type double) getLongitude() renvoie la longitude en degrs (rel type double) getFeatureName() renvoie le nom du lieu getLocality() renvoie le nom de la ville getPostalCode() renvoie le code postal getCountryName() renvoie le nom du pays commenant 0). Renvoie null s'il n'y a rien correspondant l'index. On peut connatre le nombre de lignes d'adresse disponibles par la mthode : getMaxAddressLineIndex()
getAddressLine(int) renvoie la ligne d'adresse dsigne par son index pass en paramtre (en
Exemple :
Le code suivant : Geocoder localisateur = new Geocoder(this, Locale.FRANCE); List<Address> liste = localisateur.getFromLocationName("Parc Montaury, Anglet", 10); Renvoie une liste ne contenant qu'un seul objet de classe Address dont le contenu est le suivant : latitude : 43,4800424
57
longitude : -1,5093202 nom de lieu : Alle du Parc Montaury nom de ville : Anglet code postal : 64600 nom de pays : France Deux lignes d'adresse qui sont : Alle du Parc Montaury 64600 Anglet
GoogleMaps
Prparation du projet
Pour pouvoir utiliser GoogleMaps il faut que le projet ait t cre avec comme SDK cible le SDK "Google APIs" et non le SDK "Android x.x". Si l'on utilise un mulateur de terminal il faudra galement le configurer pour qu'il fonctionne avec ce SDK. La bibliothque GoogleMaps doit tre intgre l'application par l'ajout dans le fichier AndroidManifest d'une balise : <uses-library android:name="com.google.android.maps" /> L'activit doit hriter de MapActivity et non de Activity. Elle doit implmenter la mthode isRouteDisplayed propre MapActivity qui sert au serveur pour des statistiques concernant l'affichage d'itinraires. On peut se contenter du code suivant : protected boolean isRouteDisplayed() { return false; }
Cl d'utilisation
L'accs Google maps ncessite une cl que l'on obtient comme suit : Avoir un compte Google ou en crer un en allant sur https://www.google.com/accounts/ Obtenir l'empreinte md5 du certificat de l'application. Pour ce faire : Ouvrir une fentre DOS et se mettre dans le rpertoire du compilateur java (par exemple : C:\Program Files\Java\jdk1.6.0_07\bin) Taper la commande : keytool list alias androiddebugkey keystore chemin storepass android keypass android dans laquelle chemin dsigne le fichier debug.keystore qui se trouve dans le rpertoire de l'utilisateur (pour trouver ce rpertoire depuis Eclipse utiliser le menu Windows Preferences : Android : Build rubrique Android debug keystore). Cette commande affiche un certificat MD5 de la forme : androiddebugkey, 2 oct. 2010, PrivateKeyEntry, Empreinte du certificat (MD5) : CA:78:06:9E:1A:27:20:4D:28:78:6B:F3:A5:D2:BF:78 Obtenir la cl en allant sur la page : http://code.google.com/intl/fr/android/maps-api-signup.html Le code prcdent est saisi dans "My certificate's Fingerprint" et on clique sur le bouton "Generate API Key". Aprs s'tre authentifi on rcupre une cl qui est une chane de caractres (faites un copier/coller dans un fichier texte pour ne pas la perdre). Cette cl fonctionnera pour toutes vos applications.
La classe MapView
Cette classe hrite de ViewGroup. Elle a donc les mmes proprits que ViewGroup Exemple de fichier XML : <com.google.android.maps.MapView android:id="@+id/carte" android:layout_width="fill_parent" android:layout_height="fill_parent"
58
Construction
mapView(Context, String) le premier paramtre est gnralement l'activit elle-mme, le second paramtre est la cl.
Apparence
displayZoomControls(boolean) affiche le contrle de zoom. Le paramtre permet de donner le focus ce contrle (true) setBuiltInZoomControls(boolean) autorise (true) ou invalide (false) le contrle de zoom setSatellite(boolean) affichage en mode satellite ou plan setStreetView(boolean)affichage avec ou sans visualisation des rues setTraffic(boolean)affichage avec ou sans visualisation du traffic
Contenu
getLatitudeSpan() renvoie l'angle de latitude visible (entre le haut et le bas de la carte affiche) en millionimes de degrs getLongitudeSpan()renvoie l'angle de longitude visible (entre la gauche et la droite de la carte affiche) en millionimes de degrs getMapCenter() renvoie un objet de classe GeoPoint indiquant le centre de la carte. Cet objet possde les mthodes getLatitudeE6() et getLongitudeE6() qui renvoient ses coordonnes gographiques en millionimes de degrs. getMaxZoomLevel() renvoie un entier indiquant la valeur maximale de zoom possible getZoomLevel()renvoie un entier indiquant la valeur actuelle de zoom isSatellite()renvoie un boolen indiquant si la carte est en mode satellite (true) isStreetView()renvoie un boolen indiquant si la carte est en mode rues (true) isTraffic()renvoie un boolen indiquant si la carte est en mode trafic (true)
Projection
Lorsqu'une carte est affiche il est possible de rcuprer les coordonnes gographiques d'un point par rapport sa position l'cran (par exemple lorsque l'utilisateur touche la carte). Ceci peut se faire par la mthode fromPixels(int, int) de l'objet de classe Projection renvoy par la mthode getProjection() de l'objet de classe MapView affich. Cette mthode prend en paramtres les coordonnes (x et y) d'un pixel l'cran et renvoie un objet de classe GeoPoint correspondant la position. . Cet objet possde les mthodes getLatitudeE6() et getLongitudeE6() qui renvoient ses coordonnes gographiques en millionimes de degrs.
La classe MapController
Cette classe hrite sert piloter la carte affiche. On l'obtient par la mthode getController() de l'objet MapView.
Dplacements
animateTo(GeoPoint) positionne la carte sur le point pass en paramtre en faisant une animation. La classe GeoPoint possde un constructeur acceptant en paramtres ses coordonnes gographiques en millionimes de degrs; le 1er paramtre est la latitude, le second la longitude.
59
setCenter(GeoPoint) positionne la carte sur le point pass en paramtre sans faire d'animation. La classe GeoPoint possde un constructeur acceptant en paramtres ses coordonnes gographiques en millionimes de degrs scrollBy(int , int) dplace la carte. Le premier paramtre exprime le dplacement horizontal (en pixels), le second le dplacement vertical. setZoom(int) dfinit le niveau de zoom zoomIn() zoome d'un niveau zoomOut() d-zoome d'un niveau
60