APPLICATIONS JAVA. 4. Android. Android. Développement d'activités Java sous Android



Documents pareils
APPLICATIONS JAVA. 1. Android. Développement d'activités Java sous Android. Android Partie I. L'architecture du système Android. Application Android

TP SIN Programmation sur androïde Support : eclipse

TP au menu «UI ANDROID»

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

1.3 Gestion d'une application

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Warren PAULUS. Android SDK et Android x86

Les fondamentaux du développement d applications Java

Tutorial pour une application simple

TD/TP 1 Introduction au SDK d Android

De Java à Android version 0.1

SOMMAIRE

Créer des applications Android

TP2 : Client d une BDD SqlServer

Projet Android (LI260) Cours 2

Java DataBaseConnectivity

Android 4 Les fondamentaux du développement d'applications Java

Développement Android. J.-F. Couchot

Développement sous Android

Installation et prise en main

Introduction ANDROID

Programmation mobile avec Android

Programmation Mobile Android Master CCI

Table des matières. Partie I Concepts de base Préface... VII

Education Delivery Intelligent Tool

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

TP1 : Initiation à Java et Eclipse

Création d un service web avec NetBeans 5.5 et SJAS 9

Tutoriel Android - TP de prise en main

Introduction à Eclipse

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Gestion des différentes tailles d écran

Optimiser pour les appareils mobiles

Programmation Android L3 informatique

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Terminaux Mobiles Communicants

Votre premier projet Android

Encore plus de widgets et de conteneurs

Edutab. gestion centralisée de tablettes Android

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel Android. Pour démarrer la programmation d'applications Android

Java 7 Les fondamentaux du langage Java

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Android en action. Abdelkader Lahmadi Université de Lorraine

Android 101. Rémi Forax

BIRT (Business Intelligence and Reporting Tools)

Assistance à distance sous Windows

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

ECLIPSE ET PDT (Php development tools)

SECURIDAY 2013 Cyber War

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

Introduction à JDBC. Accès aux bases de données en Java

Développement sous Android

La base de données XML exist. A. Belaïd

Interfaces graphiques avec l API Swing

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Formation : WEbMaster

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

INTRODUCTION AUX TESTS CODES DE L INTERFACE UTILISATEUR

contact@nqicorp.com - Web :

Eclipse atelier Java

Android. Programmation. De la conception au déploiement avec le SDK Google Android 2. Damien Guignard Julien Chable Emmanuel Robles

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

TP1 : Initiation à Java et Eclipse

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Table des matières Introduction Démarrage Les composants graphiques... 26

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Joomla! Création et administration d'un site web - Version numérique

Module Architecture des systèmes mobiles : Android première partie Didier FERMENT - UPJV

Application web de gestion de comptes en banques

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Génie Logiciel et Interaction Homme-Machine PROJET UCAMPUS

L accès à distance du serveur

l'ordinateur les bases

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Utilisation de l éditeur.

Manuel d utilisation NETexcom

Java pour le Web. Cours Java - F. Michel

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

LES ACCES ODBC AVEC LE SYSTEME SAS

AFTEC SIO 2. Christophe BOUTHIER Page 1

TBI-DIRECT. Bridgit. Pour le partage de votre bureau. Écrit par : TBI Direct.

Guide de l'utilisateur de l'application mobile

contact@nqicorp.com - Web :

Raja Bases de données distribuées A Lire - Tutoriel

GUIDE DE DÉMARRAGE RAPIDE

Bases Java - Eclipse / Netbeans

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

Logiciel de gestion de caisse et d ardoises

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

Installation d'une galerie photos Piwigo sous Microsoft Windows.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Manuel du composant CKForms Version 1.3.2

Transcription:

APPLICATIONS JAVA Android Ivan MADJAROV - 2013 Applications Java sous Android IvMad, 2011-2013 2 4. Android Développement d'activités Java sous Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet.

Applications Java sous Android IvMad, 2011-2013 3 L'architecture du système Android Android est un système d'exploitation basé Linux pour les appareils mobiles (Smartphone et Tablette) avec une interface de programmation Java. Le SDK Android a tous les outils nécessaires pour le développement d'applications: Compilateur Débogueur Emulateur Machine virtuelle Applications Java sous Android IvMad, 2011-2013 4 Fonctionnement du système Android Android estunsecrééparl'open Handset Alliance dirigée par Google. Android propose une interface de programmation Java avec sa propre machine virtuelle DVM (Virtual Machine Dalvik). L'interface fournit des outils pour la compilation, le débogage et un simulateur de périphérique mobile et embarqué. Android utilise une machine virtuelle spéciale. Son byte-code est incompatible avec celui de Java standard (Oracle). Un outil "dx" est proposé pour convertir un fichier Java classe dans le format Android "dex" (Dalvik exécutable). Une application Android est emballée dans un fichier.apk (Android Package) par AAPT (Android Asset Packaging Tool) Pour développer Google fournit ADT (Android Development Tools) pour l'ide Eclipse et pour l'ide NetBeans de Sun (Oracle).

Applications Java sous Android IvMad, 2011-2013 5 Fonctionnement du système Android L'ADT effectue automatiquement la conversion d'une classe "dex" en.apk au cours du déploiement. Android supporte le graphisme 2-D et 3-D en utilisant la bibliothèque OpenGL. Le stockage de données dans une BD est pris en charge par SQLite. SQLite est une Open Source Database intégrée dans Android. SQLite supporte les fonctionnalités standards pour une BDR telles que SQL syntaxe, la gestion des transactions et "prepared statements". Une application sous Android s'exécute dans son propre processus et sous son propre nom d'utilisateur qui est généré automatiquement au cours de son déploiement. Par conséquent, l'application est isolée des autres applications en cours et ne peut pas facilement affecter la sécurité des autres applications. Applications Java sous Android IvMad, 2011-2013 6 L'architecture du système Android Le GUI d'android est un système mono-thread, événementiel avec une bibliothèque à composants extensibles organisée autour du modèle Model-View-Controller. Model: représente les données et le conteneur de données: base de données, images, sons, etc. View: c'est la partie de l'application chargée de rendre l'affichage, l'envoi de l'audio aux haut-parleurs, générant un retour tactile. Controller: c'est la partie qui répond à des actions externes: le clavier, l'écran tactile, les appels entrants.

Applications Java sous Android IvMad, 2011-2013 7 Structure d'une application Android Android étant un système d'exploitation pour téléphone portable de nouvelle génération dispose d'un kit de développement (SDK) basé sur le langage Java. Le SDK d'android est disponible pour les plateformes Linux, Mac et Windows à l'adresse : http://code.google.com/android/download.html Pour développer avec l'ide Eclipse Google fournit un plugin ADT (Android Development Tools). Pour le développementt avec l'ide NetBeans Android propose le plugin "nbandroid" accessible à : http://nbandroid.kenai.com. Le développement pour Android est possible aussi sans un IDE particulier en se servant des commandes du SDK d'android avec Ant pour la compilation et la gestion du simulateur. A consulter : http://ydisanto.developpez.com/tutoriels/android/debuter/ Applications Java sous Android IvMad, 2011-2013 8 Le développement Android La chaine de production Java Android

Applications Java sous Android IvMad, 2011-2013 9 Le système Android Architecture d'une application Java Android Applications Java sous Android IvMad, 2011-2013 10 Java2SE (Oracle) et Java Dalvik (Google)

Applications Java sous Android IvMad, 2011-2013 11 Développer avec Eclipse Les outils nécessaires sont : Android SDK: http://dl.google.com/android/android-sdk_r21-windows.zip Eclipse: http://www.eclipse.org/downloads/eclipse-sdk-4.2.1-win32.zip Le plugin ADT de Eclipse: https://dl-ssl.google.com/android/eclipse/ Préparation de l environnement Installation du SDK Android dans SE. Installation plug-in ADT pour Android dans Eclipse Installation d un téléphone virtuel Android Configuration d'une unité virtuel dans l'ide Eclipse Un téléphone ou tablette Android se connectent à un PC par le câble USB. Applications Java sous Android IvMad, 2011-2013 12 Développer avec Eclipse Zone de stockage des projets Eclipse

Applications Java sous Android IvMad, 2011-2013 13 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2013 14 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2013 15 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2013 16 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2013 17 Développer avec Eclipse 1 2 3 Applications Java sous Android IvMad, 2011-2013 18 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2013 19 Développer avec Eclipse Installation du plug-in ADT pour Eclipse->Help->Installerunnouveau Software Applications Java sous Android IvMad, 2011-2013 20 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2013 21 Développer avec Eclipse Renseigner les champs: Name et Location Applications Java sous Android IvMad, 2011-2013 22 Développer avec Eclipse 1 2 3

Applications Java sous Android IvMad, 2011-2013 23 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2013 24 Développer avec Eclipse

Applications Java sous Android IvMad, 2011-2013 25 Développer avec Eclipse Applications Java sous Android IvMad, 2011-2013 26 Installation du SDK Android

Applications Java sous Android IvMad, 2011-2013 27 Installation du SDK Android Applications Java sous Android IvMad, 2011-2013 28 Développer avec Eclipse Installation d un téléphone virtuel Android

Applications Java sous Android IvMad, 2011-2013 29 Android SDK Manager Installation d un téléphone virtuel Android Applications Java sous Android IvMad, 2011-2013 30 Android Virtual Device Manager

Applications Java sous Android IvMad, 2011-2013 31 Android Virtual Device Manager Applications Java sous Android IvMad, 2011-2013 32 Android Virtual Device Manager

Applications Java sous Android IvMad, 2011-2013 33 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2013 34 Nouveau projet Eclipse-Android

Applications Java sous Android IvMad, 2011-2013 35 Nouveau projet Eclipse-Android Applications Java sous Android IvMad, 2011-2013 36 Nouveau projet Eclipse-Android

Applications Java sous Android IvMad, 2011-2013 37 Nouveau projet Eclipse-Android Le "premier_projet_android" avec les composants à compiler et à exécuter dans un environnement d'émulateur La classe R accède aux ressources Classe interne associée à une ressource Nom de la ressource dans le répertoire res/layout Applications Java sous Android IvMad, 2011-2013 38 Nouveau projet Eclipse-Android Exécution de l'application Android

Applications Java sous Android IvMad, 2011-2013 39 Nouveau projet Eclipse-Android Lancement du système Android Applications Java sous Android IvMad, 2011-2013 40 L'application Android

Applications Java sous Android IvMad, 2011-2013 41 Structure d'une application Android Activity : La couche représentative et visuelle de l'application qui peut avoir plusieurs couches qui alternent entre elles lors de l'exécution. Views : LeIHM(GUI) estune"widgets" couche qui hérite des classes "android.view.view"et "android.view.viewgroups". Service : Il n'a pas de vue, mais permet l exécution d un algorithme sur un temps indéfini et terminé en fonction de la tâche. Content Provider : fournit des données aux applications, via un fournisseur de contenu capable de les partager avec d'autres applications (agenda, photos, contacts stockés dans le téléphone). Intents : Une application peut appeler un service ou une activité (explicite) ou appeler un service du système Android (implicites). Broadcast Receiver : reçoit les messages système et les "Intents" implicites. Applications Java sous Android IvMad, 2011-2013 42 Cycle de vie d une application Android public class MainActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.acceuil); // suspendue détruit: ondestroy invoqué protected void ondestroy() { super.ondestroy(); // actif suspendue: ne détient plus le focus protected void onpause() { super.onpause(); // suspendue actif: onresume invoqué protected void onresume() { super.onresume(); // démarrage actif: détient le focus et est démarré protected void onstart() { super.onstart(); protected void onstop() { super.onstop();

Applications Java sous Android IvMad, 2011-2013 43 Architecture d'une application Android oncreate : La méthode est appelée à la création d'une activité pour initialiser les données nécessaires à l'exécution de l'application. A l'appel de la méthode un Bundle est passé en argument. Il contient l état de sauvegarde enregistré lors de la dernière exécution. onstart : La méthode est appelée dans le cas où l'application est en arrière-plan et qu elle repasse en avant-plan. Si l'activité ne peut pas passer en avant plan alors, l activité sera transférée à OnStop. onresume : La méthode est appelée après OnStart quand l'application passe en background à cause d une autre application. onpause : La méthode met en pause l'application et se relance avec la méthodes OnResume. onstop : Appelée quand l'activité n est plus visible. ondestroy : Appelée quand l'application est fermée (processus closed). Applications Java sous Android IvMad, 2011-2013 44 Programmer sous Android Interface graphique par programmation Pour faciliter le développement Android propose un grand nombre de "widgets" qui sont des éléments d interface graphique qu'on peut utiliser dans une application de manière directe et simple. On peut utiliser les classiques : boutons, listes déroulantes, cases à cocher mais aussi de composants plus poussés : des horloges, des sélecteurs de dates, des galeries photos et des afficheurs de vidéos. Interface graphique par fichier XML Le fichier XML sera lu par le programme et l interface graphique sera automatiquement générée en conséquence. Il devient ainsi beaucoup plus facile de modifier et de faire évoluer une interface graphique déjà existante.

Applications Java sous Android IvMad, 2011-2013 45 Android - Java : Bonjour tout le monde import android.app.activity; import android.os.bundle; import android.widget.textview; public class Bonjour extends Activity { public void oncreate(bundle icicle) { super.oncreate(icicle); TextView tv = new TextView(this); tv.settext("bonjour tout le monde!"); setcontentview(tv); Simulateur d'unité mobile sous Android Une première application "Bonjour tout le monde" Applications Java sous Android IvMad, 2011-2013 46 Vues et schémas (Java) Les éléments graphiques héritent de la classe View. On peut regrouper des éléments graphiques dans une ViewGroup. ViewGroup particuliers sont prédéfinis sous la forme de schémas (layout) qui proposent une prédispositions des objets graphiques: LinearLayout : dispose les éléments de gauche à droite et du haut vers le bas; RelativeLayout : les éléments enfants les uns par rapport aux autres; TableLayout : disposition en imitant un tableau par lignes et colonnes; FrameLayout : disposition en haut à gauche en empilant les éléments. La classe ViewGroup ressemble à un gestionnaire de placement connu en Swing de Java2SE. Les déclarations peuvent se faire aussi en XML, ce qui évite de passer par les instanciations Java.

Applications Java sous Android IvMad, 2011-2013 47 Label de texte et zone de texte (Java) Définir le conteneur et l'ordre de placement des composants Applications Java sous Android IvMad, 2011-2013 48 Avec une image (Java) ImageView() est la boite qui peut contenir une image. Les images utiles au projet sont placées dans le dossier "res/drawable"

Applications Java sous Android IvMad, 2011-2013 49 TextView, EditText, ImageView, Bouton Applications Java sous Android IvMad, 2011-2013 50 Récupérer la saisie d'un texte (Java) public void onclick(view view) { // au click changer le texte sur la bouton btn.settext("bouton cliqué"); // récupérer le texte tapé dans le champ String montxt = edit.gettext().tostring(); // définir un affichage de texte TextView txt = new TextView(this); // mettre le texte du champ txt.settext(montxt); // ajouter un texte au Layout layout.addview(txt);

Applications Java sous Android IvMad, 2011-2013 51 Android -GUI par Java package ivmad.tp.nowdatetime; import android.os.bundle; import android.app.activity; import android.view.view; import android.widget.button; import java.util.date; public class MainActivity extends Activity implements View.OnClickListener { Button btn; public void oncreate(bundle icicle) { super.oncreate(icicle); btn = new Button(this); btn.setonclicklistener(this); updatetime(); setcontentview(btn); public void onclick(view view) { updatetime(); private void updatetime() { btn.settext(new Date().toString()); Applications Java sous Android IvMad, 2011-2013 52 Déroulement de l'exemple (1) La déclaration de paquetage doit être identique à celle utilisée pour créer le projet. Pour un projet Java il faut importer les classes auxquelles l'application fait référence. La plupart des classes spécifiques à Android se trouvent dans le paquetage android Les classes de Java SE sont utilisables par les programmes Android, mailil faut consulter le guide de référence des classes Android pour connaitre leur disponibilité et compatibilité. Les activités sont des classes publiques héritées de la classe de base android.app.activity. Les widgets sont des éléments d interface graphique qu'on peut utiliser dans une application.

Applications Java sous Android IvMad, 2011-2013 53 Déroulement de l'exemple (2) L activité contient un bouton : Button btn; Un bouton est un widget Android et peut être utilisé dans une application. Pour capturer tous les clics de bouton dans l'activité elle-même on implémente OnClickListener. La méthode oncreate() est appelée au lancement de l activité, alors on établi un chaînage vers la superclasse afin d initialiser l activité Android de base. L instance de bouton créée (new Button(this)), on demande l envoie de tous les clics sur ce bouton à l instance de l activité (setonclicklistener()). Un appel la méthode privée updatetime() est constitué, et pour finir on configure la vue du contenu de l activité avec le bouton lui-même (setcontentview()). Applications Java sous Android IvMad, 2011-2013 54 Déroulement de l'exemple (3) Tous les widgets dérivent de la classe de base View. Bundle icicle est un gestionnaire opaque, que toutes les activités reçoivent lors de leur création. Avec Swing, un clic sur un JButton déclenche un ActionEvent qui est transmis à l ActionListener configuré pour ce bouton (Java2SE). Avec Android un clic sur un bouton fait appel de la méthode onclick() sur l instance OnClickListener configurée pour ça. L écouteur reçoit la vue qui a déclenché le clic et on fait alors appel à la méthode privée updatetime(). L ouverture de l activité (oncreate()) ou un clic sur le bouton (onclick()) doit provoquer la mise à jour du label du bouton avec la date courante. On utilise pour cela la méthode settext(), qui fonctionne exactement comme avec les JButton de Swing.

Applications Java sous Android IvMad, 2011-2013 55 Toast : popup surgissant Afficher un contenu dans un popup surgissant La classe Toast avec la méthode maketext affiche une fenêtre popup pour un délais 'court' ou 'long'. La méthode prend trois paramètres: Context context = getapplicationcontext(); // référence vers l'application String text = "Bonjour toast!"; // le texte à afficher int duration = Toast.LENGTH_SHORT; // La durée d'exposition Toast toast = Toast.makeText(context, text, duration); // Appel toast.show(); // Visualiser Appel direct du Toast pour une période 'courte' Toast.makeText(this,"message",Toast.LENGTH_SHORT).show(); Appel direct du Toast pour une période 'longue' Toast.makeText(this,"message",Toast.LENGTH_LONG).show(); Applications Java sous Android IvMad, 2011-2013 56 CheckBox CheckBox cba, cbb, cbc; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); // add button Button b = new Button(this); b.settext("cliquez ici!"); b.setonclicklistener(this); ll.addview(b); //add checkboxes cba = new CheckBox(this); cba.settext("bleu"); ll.addview(cba); cbb = new CheckBox(this); cbb.settext("blanc"); ll.addview(cbb); cbc = new CheckBox(this); cbc.settext("rouge"); ll.addview(cbc); setcontentview(ll); public void onclick(view v) { Toast tst; String answer=""; if (cba.ischecked()) { answer += cba.gettext()+" "; if (cbb.ischecked()) { answer += cbb.gettext()+" "; if (cbc.ischecked()) { answer += cbc.gettext()+" "; tst = Toast.makeText(this, answer, Toast.LENGTH_LONG); tst.show();

Applications Java sous Android IvMad, 2011-2013 57 Radio bouton protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Gestionnaire de placement LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); // Bouton Button b = new Button(this); b.settext("affichez votre langage préféré"); b.setonclicklistener(this); ll.addview(b); // Radio boutons en groupe rg = new RadioGroup(this); rg.setorientation(radiogroup.vertical); rba = new RadioButton(this); rba.settext("java"); rg.addview(rba); rbb = new RadioButton(this); rbb.settext("python"); rg.addview(rbb); rbc = new RadioButton(this); rbc.settext("c#"); rg.addview(rbc); // Placement dans layout ll.addview(rg); setcontentview(ll); public void onclick(view v) { Toast tst; if ( rba.ischecked() ) { tst = Toast.makeText(this, rba.gettext(), Toast.LENGTH_LONG); tst.show(); if ( rbb.ischecked() ) { tst = Toast.makeText(this, rbb.gettext(), Toast.LENGTH_LONG); tst.show(); if ( rbc.ischecked() ) { tst = Toast.makeText(this, rbc.gettext(), Toast.LENGTH_LONG); tst.show(); Applications Java sous Android IvMad, 2011-2013 58 Android Spinner (ComboBox) public class SpinnerComBoxActivity extends Activity implements OnClickListener { String colors[] = {"Red","Blue","White","Yellow","Black"; Spinner sp; public class SpinnerComBoxActivity extends Activity implements OnClickListener { String colors[] = {"Red","Blue","White","Yellow","Black"; Spinner sp; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); LinearLayout ll = new LinearLayout(this); ll.setgravity(gravity.top); ll.setorientation(linearlayout.vertical); Button b = new Button(this); b.settext("affichez votre choix"); b.setonclicklistener(this); ll.addview(b); sp = new Spinner(this); // Application of the Array to the Spinner ArrayAdapter<String> sparrayadapter = new ArrayAdapter<String> (this,android.r.layout.simple_spinner_item,colors); sp.setadapter(sparrayadapter); ll.addview(sp); setcontentview(ll); public void onclick(view v) { int i = sp.getselecteditemposition(); Toast.makeText(getBaseContext(),"Votre choix: "+colors[i],toast.length_short).show();

Applications Java sous Android IvMad, 2011-2013 59 Android Spinner (ComboBox) Pour réaliser la liste déroulante avec la classe Spinner dans le fichier activity_spinner_com_box.xml il faut ajouter le code suivant: <Spinner android:id="@+id/spinner01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawselectorontop="true"> </Spinner> Applications Java sous Android IvMad, 2011-2013 60 Android Ecrire dans un fichier WriteData(getApplicationContext(),textOut); // Appel de la méthode // context: id de l'application public void WriteData(Context context, String data) { FileOutputStream fout = null; OutputStreamWriter osw = null; try { // Ouvrir un fichier 'contacts.dat' en mode ajouter fout = context.openfileoutput("contacts.dat",mode_append); osw = new OutputStreamWriter(fOut); osw.write(data); // Ecrire les données dans le flux de sortie osw.flush(); // Vider le flux de sortie // affiche le résultat de l'opération Toast.makeText(context,"Sauvegarde réussie",toast.length_short).show(); catch (Exception e) { Toast.makeText(context,"Problème de sauvegarde!",toast.length_short).show(); finally { try { osw.close(); // Fermer le flux d'écriture fout.close(); // Fermer le fichier 'contact.dat' catch (IOException e) { Toast.makeText(context,"Problème de sauvegarde",toast.length_short).show();

Applications Java sous Android IvMad, 2011-2013 61 Android Lire dans un fichier String dataread = ReadData(getApplicationContext()); // Appel de la méthode // context: id de l'application public String ReadData(Context context) { FileInputStream fin = null; InputStreamReader isr = null; char[] inputbuffer = new char[255]; String data = null; try { fin = context.openfileinput("contacts.dat"); // Ouvrir le fichier isr = new InputStreamReader(fIn); // Lire dans le flux d'entrée isr.read(inputbuffer); // Lire le contenu du tampon data = new String(inputBuffer); // Convertir les données en chaine de car. // affiche le contenu du fichier dans un popup surgissant Toast.makeText(context,"Contenu: "+data,toast.length_short).show(); catch (Exception e) { Toast.makeText(context,"Erreur de lecture",toast.length_short).show(); finally { try { isr.close(); fin.close(); catch (IOException e) { Toast.makeText(context,"Erreur de lecture",toast.length_short).show(); return data; Applications Java sous Android IvMad, 2011-2013 62 Android client-side TCP socket package ivmad.tcp.client; import java.io.datainputstream; import java.io.dataoutputstream; import java.io.ioexception; import java.net.socket; import java.net.inetaddress; import java.net.unknownhostexception; import android.app.activity; import android.os.bundle; import android.os.strictmode; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; import android.widget.textview; public class ClientTCPAndroidActivity extends Activity { LinearLayout layout; EditText textout; TextView textin; Button buttonsend; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); layout = new LinearLayout(this); layout.setorientation(linearlayout.vertical); textin = new TextView(this); textin.settext("message à soumettre"); textout = new EditText(this); buttonsend = new Button(this); buttonsend.settext("envoyer"); buttonsend.setonclicklistener(buttonsendonclicklistener); layout.addview(textin); layout.addview(textout); layout.addview(buttonsend); setcontentview(layout);

Applications Java sous Android IvMad, 2011-2013 63 Android client-side TCP socket Button.OnClickListener buttonsendonclicklistener = new Button.OnClickListener() { public void onclick(view v) { Socket socket = null; DataOutputStream dataoutputstream = null; DataInputStream datainputstream = null; InetAddress serveraddr; String serveripaddress = "192.168.0.141"; // Définir les droits d'accès au ressources réseaux StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); try { serveraddr = InetAddress.getByName(serverIpAddress); socket = new Socket(serverAddr, 1234); dataoutputstream = new DataOutputStream(socket.getOutputStream()); datainputstream = new DataInputStream(socket.getInputStream()); dataoutputstream.writeutf(textout.gettext().tostring()); textin.settext(datainputstream.readutf()); catch (UnknownHostException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); finally { if (socket!= null && dataoutputstream!= null && datainputstream!= null) { try { socket.close(); dataoutputstream.close(); datainputstream.close(); catch (IOException e) { e.printstacktrace(); ; Applications Java sous Android IvMad, 2011-2013 64 Android client-side TCP socket Le fichier AndroidManifest.xml contient la description des ressources et les autorisations d'accès au réseau Internet <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ivmad.tcp.client" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="15" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".clienttcpandroidactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

Applications Java sous Android IvMad, 2011-2013 65 Android client-side TCP socket Le serveur TCP reçoit le message du client Android Le client TCP basé Android envoie un message au Serveur basé TCP Applications Java sous Android IvMad, 2011-2013 66 Android connexion à MySQL Une application Java peut se connecter à une BD MySQL avec un connecteur JDBC. Ceci est juste pour Java2SE et JSP. Le pilote JDBC est l'interface de liaison entre l'application et le SGBD. Les récentes version d'android préconisent l'utilisation d'un service Web et une connexion basée HTTP par l'intermédiaire de scripts PHP ou JSP pour accéder au contenu de la BD et pour recevoir sur l'unité mobile sous Android le résultat d'une requête SQL. Néanmoins, il est possible de réussir une connexion avec une BD basée MySQL en se servant d'un connecteur JDBC ancienne génération beaucoup plus adapté aux connexions lentes d'un Smartphone ou une Tablette. Ainsi, dans les transparents qui suivent je présente une connexion réussie avec le connecteur JDBC dans le contexte de la DOSI : mysql-connector-java-3.0.17-ga-bin.jar

Android connexion à MySQL public void listdb() { // Renseigner les champs nécessaires à la connexion String url = "jdbc:mysql://dbs-perso.luminy.univmed.fr:3306/nom_bd"; String user = "nom_utilisateur"; String pass = "mot_de_passe"; try { // Instancier le driver JDBC Class.forName("com.mysql.jdbc.Driver").newInstance(); // Effectuer la connexion avec le serveur de la BD Connection con = DriverManager.getConnection(url, user, pass); // Confirmer la connexion Toast.makeText(getApplicationContext(),"Connexion OK!",Toast.LENGTH_SHORT).show(); // Préparer la requete SQL Applications Java sous Android IvMad, 2011-2013 67 String result = ""; Statement st = con.createstatement(); ResultSet rs = st.executequery("select * from contact"); // Recuperer le résultat de la requete ResultSetMetaData rsmd = rs.getmetadata(); // Extraire les éléments propres à chaque champs while(rs.next()) { result += rsmd.getcolumnname(1) + ": " + rs.getint(1) + "\n"; result += rsmd.getcolumnname(2) + ": " + rs.getstring(2) + "\n"; result += rsmd.getcolumnname(3) + ": " + rs.getstring(3) + "\n"; result += rsmd.getcolumnname(4) + ": " + rs.getstring(4) + "\n"; Toast affiche un contenu dans un cadre temporaire en fonction de trois paramètres: context, text, duration rs.close(); con.close(); // Afficher le résultat Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); catch(exception e) { e.printstacktrace(); Applications Java sous Android IvMad, 2011-2013 68 Android connexion à MySQL Dans l'ide Eclipse le connecteur JDBC doit être rajouté au projet qui gère les classes de la connexion. Télécharger dans un dossier le connecteur à partir de l'adresse: http://139.124.26.245/ic4/pilot/mysql-connector-java-3.0.17-ga-bin.jar Par simple glisser dans l'interface Eclipse: copier/coller mettre le pilote dans le répertoire 'libs' Bouton droit sur le projet pour choisir 'Properties' -> 'Java buil Path' -> Libraries -> 'Add Jars' -> Ajouter dans Libs du projet.

Applications Java sous Android IvMad, 2011-2013 69 Android connexion à MySQL // Insérer des données dans une table public void insertdb() { try { // Instancier le connecteur Class.forName("com.mysql.jdbc.Driver").newInstance(); // Etablir la connexion avec le serveur de la BD Connection con = DriverManager.getConnection(url, user, pass); // Construire la requête d'insertion de données requises à partir // d'une interface utilisateur sur l'unité mobile String ssql = ""; ssql += "INSERT INTO Contact(prenom,nom,tel)"; ssql += " VALUES ('"+lastnametext.gettext().tostring()+ "','"+firstnametext.gettext().tostring()+ "','"+telnumbertext.gettext().tostring()+"');"; // Créer l'opérateur Statement st = con.createstatement(); // Lancement de la requête int nb = st.executeupdate(ssql); // Fermeture des connexions st.close(); con.close(); catch(exception e) { e.printstacktrace(); Applications Java sous Android IvMad, 2011-2013 70 GUI par XML : Layout (1) Android, vis-à-vis des autres systèmes d'exploitation mobiles, possède la possibilité de créer des interfaces graphiques àl'aidedefichiers XML. Cette particularité favorise la séparation de la description de l'interface graphique (layout XML) de la logique applicative (code Java). Cela a pour effet la séparation du fond de la forme et facilite par exemple la "localisation" d'une interface graphique en fonction de la langue (français, anglais, bulgare), du contexte d'utilisation (jour ou nuit) ou la modification de l ergonomie (boutons, listes, cases à cocher). Android inclut un système proche des CSS de W3C bien connu pour le développement Web. Il s'agit des styles et des thèmes qui permettent le respect d'une cohérence à travers une application. Ainsi, l'interface graphique est construite dans des fichiers XML présents dans le dossier res/layout d'un projet Android (Eclipse).

Applications Java sous Android IvMad, 2011-2013 71 XML : les bases XML signifie extensible Markup Language C'est un langage à balises accompagné normalement d'une description sémantique (grammaire) et éventuellement de scripts CSS ou procédure de transformation XSLT pour la visualisation du document XML par un navigateur Web. Les balises sont ouvrantes, <balise_ouvrante> ou fermantes, </balise_fermante>, ou balises à paramètre <balise paramètre1, paramètre2 /> Les balises peuvent être imbriquées : on peut insérer un ou plusieurs couples de balises <cinematheque> élément racine <film> élément enfant <nom>die Hard 4</nom> <realisateur>len Wiseman</realisateur> <annee_sortie>2012</annee_sortie> <acteur prenom="bruce" nom="willis" /> </film> </cinematheque> balise à contenu balise avec attributs Applications Java sous Android IvMad, 2011-2013 72 Les Transformations XML

Applications Java sous Android IvMad, 2011-2013 73 Android : Styles et Thèmes Un style est un ensemble d'attributs de formatage qu'on peut appliquer àdeséléments simples mis dans un fichier XML. Par exemple, on peut définir un style qui spécifie une taille ou une couleur appliqué à un certain type d'éléments View. Un thème est un ensemble d'attributs de formatage qu'on peut appliquer à une unité pour toutes les activités d'une application. Parexemple,onpeutdéfinirunthème qui met des couleurs spécifiques pour l'ensemble des éléments d'une fenêtre (bordure et fond), définir la taille du texte et les couleurs des menus dans un fichier XML. Créer ses propres Styles et Thèmes : Créer un fichier 'styles.xml' avec un nœud '<ressource>' dans le répertoire 'res/values' du projet. Pour chaque style ou thème il faut ajouter un élément '<style name="nom_de_style">'. Les éléments de style sont déclarés à l'intérieur par des '<item name="android:style>valeur</item>'. Applications Java sous Android IvMad, 2011-2013 74 Layout XML : les plus utilisés (2) Un XML layout est un conteneur permettant d'organiser le placement des différents widgets dans l'interface utilisateur (UI). Ainsi : FrameLayout :Leswidgets contenus dans le FrameLayout sont affichés en haut à gauche de l'écran. LinearLayout :Tousleswidgets sontaffichéslesunsaprèslesautres,soit verticalement, soit horizontalement. RelativeLayout : Permet d'organiser les différents widgets en fonctions de la position des autres widgets. TableLayout : Permet d'organiser les widgets en lignes et en colonnes en imitant une présentation en forme de tableau. Sous Android, la notion de mise en page est reliée à la notion de Layout ce qui représente l agencement des différents éléments graphiques dans l'interface graphique en fonction des différentes tailles et résolutions d écran.

Applications Java sous Android IvMad, 2011-2013 75 Layout XML : les plus utilisés (3) On peut déclarer les Layouts par code Java ou par XML. La déclaration en XML convient pour les interfaces statiques et la déclaration Java convient aux interfaces dynamiques. Les approches peuvent entre combinées en fonction des objectifs de l'application à développer. La déclaration du Layout de la principale vue (activity_main.xml) se trouve dans le répertoire "res/layout" à partir de la racine du projet. android:orientation : pour l orientation du LinearLayout (Vertical ou Horizontal). android:layout_width et android:layout_height : fill_parent (match_parent) pour direquecelareprésentelatailleduparentouwrap_content pour dire qu elle prend la taille de contenu. Applications Java sous Android IvMad, 2011-2013 76 Application Android L'application Android est décrite dans le fichier AndroidManifest.xml. Le fichier contient la description de tous les Activities, Services, BroadcastReceivers, ContentProvider de l'application. Le fichier contient aussi les éléments de sécurité pour l'application: l'autorisation pour un accès réseau par exemple. C'est aussi le fichier qui contient la description des composants de déploiement d'une application Android.

Applications Java sous Android IvMad, 2011-2013 77 AndroidManifest.xml L'application Android est décrite dans le fichier AndroidManifest.xml. Autorisations pour accéder au réseau Applications Java sous Android IvMad, 2011-2013 78 Le projet ADT Android Un projet plugin ADT est décomposé de la manière suivante: src/: les sources Java du projet libs/: bibliothèques tierces res/: res/drawable: ressources images res/layout: description des IHM en XML res/values: chaines de caractères et dimensions gen/: les ressources auto générées par ADT assets/: ressources brutes (raw bytes) bin/: bin/classes: les classes compilées en.class bin/classes.dex: exécutable pour la JVM Dalvik bin/myapp.zip: les ressources de l'application bin/myapp.apk: application empaquetée avec ses ressource et prête pour le déploiement

Applications Java sous Android IvMad, 2011-2013 79 Les ressources d'une application Android Le répertoire res contient toutes les ressources qui seront mises dans le apk : drawable-hdpi -imagesenhautedéfinition; drawable-ldpi - images en basse définition; drawable-mdpi - images en moyenne définition; layout - description en XML des interfaces; values - définitions en XML de constantes (chaînes, tableaux, valeurs numériques); anim - description en XML d animations; menus - description en XML de menus pour l application; xml - fichiers XML utilisés directement par l application; raw - tous les autres types de ressources : sons, vidéos, Applications Java sous Android IvMad, 2011-2013 80 Accès aux ressources Android Référencement d une ressource dans un fichier xml. La forme générale est : "@type/identificateur", Par exemple : @string/letexte : Fait référence à une chaine contenue dans un fichier XML placé dans le répertoire res/values et définie comme suit: <resources> <string name="letexte">contenu du texte à afficher</string> </resources> Référencement d une ressource dans le code Java. La forme générale est : R.type.nom. La classe Ressource (R) permet l accès aux ressources. Par exemple : R.string.letexte fait référence à la chaine ci-dessus. Dans l'application on accède aux ressources par la mise en place de l interface principale: setcontentview(r.layout.nom_du_fichier_xml);

Applications Java sous Android IvMad, 2011-2013 81 Application Android et XML Création d un nouveau projet Android : commencer par File -> New -> Android Project -> Next -> Project Name (premiereapplication) -> Next -> Next -> Package Name (com.premiere.application) -> Finish. Avec cela l application est créée et peut être lancée par le bouton Run (Run as -> Android application). Les fichiers XML de l application Android: ouvrir le fichier premiereapplication -> res -> values -> string.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World, Premiere_applicationActivity!</string> <string name="app_name">premiere_application</string> </resources> Modifier le texte de l'attribut "hello" avec "Android, Bonjour tout le monde!". Sauvegarder et relancer l'application. Applications Java sous Android IvMad, 2011-2013 82 Application Android et XML Ajouter des composants dans le fichier string.xml: Ouvrir l'onglet "Ressources". Cliquer sur le bouton "Add" choisir attribut "String" confirmer avec "OK". Inscrire dans le champ Name "prenom" et dans le champ Value "Entrez votre prénom :". Refaire les opérations d ajout pour encore deux attributs: Name "nom", Value "Entrez votre nom :" et Name "bouton", Value "Envoyer". Sauvegarder à chaque modification!

Applications Java sous Android IvMad, 2011-2013 83 Application Android et XML L'application Android affiche à son exécution un texte de bien venu. L'interface graphique peut être gérer par des fichiers XML. Ainsi, la taille des caractères et la couleur du texte peut être préciser. Pour créer les fichiers XML nécessaires il faut procéder par: Faire clic droit sur le dossier values -> New -> Other -> Android -> Android XML File -> Next -> File (dimensions.xml) -> Finish. Créer ensuite un nouvel attribut de type Dimension avec le couple Name: "dimmessage", Value: "30px". Pour enregistrer CTRL/S. Créer de la même façon un fichier colors.xml, enajoutantunattributde type Color avec Name: couleurmessage, et Value: "#ffa800". Pour enregistrer CTRL/S. Applications Java sous Android IvMad, 2011-2013 84 Application Android et XML Interface graphique: le contenu du fichier main.xml qui se situe dans res -> layout est modifié ainsi: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textviewprenom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/prenom" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <EditText android:id="@+id/edittextprenom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="bottom" android:hint="@string/prenomhint" /> <Button android:id="@+id/buttonenvoyer android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/bouton" /> </LinearLayout> <TextView android:id="@+id/textviewhello" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_horizontal" android:textsize="@dimen/dimmessage" android:textcolor="@color/couleurmessage" /> </LinearLayout>

Applications Java sous Android IvMad, 2011-2013 85 Application Android et XML Les attributs XML de l'interface graphique. android:id identifie l'élément et le rend accessible dans code Java; android:layout_width, android:layout_height défini les dimensions de l élément; fill_parent l élément prend toute la place disponible; wrap_content l élément prend la place qu il a besoins; android:layout_gravity précise la position de l élément; (center_horizontal, center_vertical, etc ) android:text configure le texte à afficher; (string.xml) android:textsize configure la taille du texte affiché; (dimensions.xml) android:textcolor configure la couleur du texte; (colors.xml) android:hint texte à afficher lorsque EditText est vide; (strings.xml) android:layout_weight rapport de taille entre éléments; Applications Java sous Android IvMad, 2011-2013 86 Application Android et XML Au lancement de l'application l'écran suivant apparait sur le simulateur Android. Dans le champ de saisie un prénom peut être tapé. Ainsi, l'interface graphique est fonctionnelle. Le bouton "Envoyer" n'est attaché à un traitement d'évènements. C'est pourquoi aucune réaction pour l'instant n'est possible.

Applications Java sous Android IvMad, 2011-2013 87 Installer une application Android Sous Android, les applications sont des fichiers *.apk. Installer une application Android depuis un fichier apk sur un téléphone portable ou une tablette équipés du système Android : Installer AppManager en le récupérant depuis Android Market Transférer le fichier apk à installer sur la carte SD (on peut aussi utiliser MountUSB) Lancer AppManager Appuyer sur la touche menu et sélectionner "Install from SD", sélectionner l application à installer (si l application n apparait pas, appuyer sur menu et "Whole SD") Deuxième possibilité: Envoyer le fichier apk par email. A l'ouverture de la pièce attachée l'application s'installe automatiquement Applications Java sous Android IvMad, 2011-2013 88 Application Android et XML (Juno) On crée un projet de base. Le code généré par l'environnement Eclipse (Juno) et l'arborescence des ressources sont les suivants: package ivmad.iut.viewproject; import android.os.bundle; import android.app.activity; import android.view.menu; public class MainActivity extends Activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); return true;

Applications Java sous Android IvMad, 2011-2013 89 Application Android et XML (2) Dans la méthode OnCreate, on définit la vue à l aide de la méthode setcontentview et on lui affecte R.layout.activity_main qui représente la vue, déclarée dans le dossier Layout. R désigne la ressource utilisée dans le dossier res. Toutes les ressources qui se trouvent dans le dossier res sont précompilées et des liens sont générés dans le dossier R.java. (C'est automatique à la création du projet) Les ressources du dossier res peuvent être modifiées car ce sont des descriptions en format XML, c.à.d. des fichiers textes à balisages Applications Java sous Android IvMad, 2011-2013 90 Application Android et XML (2) Pour changer une vue on change le fichier res/layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/ res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ImageView android:id="@+id/android_picture" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/normal_paddin g" android:src="@drawable/android" android:contentdescription="@string/image_cont ent_description" /> <Button android:id="@+id/create_account" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margintop="@dimen/small_padding " android:text="@string/create_account" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingtop="@dimen/normal_padding" android:text="@string/email" android:textsize="@dimen/normal_text_size" android:textcolor="@color/black_color" /> <EditText android:id="@+id/user_email" android:layout_width="@dimen/large_padding" android:layout_height="wrap_content" android:inputtype="textemailaddress" android:layout_gravity="center" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingtop="@dimen/normal_padding" android:textsize="@dimen/normal_text_size" android:text="@string/password" android:textcolor="@color/black_color" /> <EditText android:id="@+id/user_password" android:layout_width="@dimen/large_padding" android:layout_height="wrap_content" android:layout_gravity="center" android:inputtype="textpassword" /> <Button android:id="@+id/connect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margintop="@dimen/normal_paddin g" android:text="@string/connect" /> </LinearLayout>

Applications Java sous Android IvMad, 2011-2013 91 Application Android et XML (2) LinearLayout : android:orientation : Orientation verticale. android:layout_width et android:layout_height : Hauteur et largeur du Layout ImageView : élément qui sert à afficher une image android:layout_height : Définir la hauteur de l élément. android:id : Identifiant de l élément android:layout_width : Largeur de l élément. android:src : Image source utilisée pour l ImageView. android:layout_margintop : Marge externe du haut. Les différentes tailles utilisées sont déclarées dans le fichier dimens.xml (dossier values) et utilisées en suivant la syntaxe @dimen/nom_de_la_variable android:contentdescription : utiliser pour la description du contenu de l image Applications Java sous Android IvMad, 2011-2013 92 Application Android et XML (2) Button android:layout_gravity : Position de l élément (center, left, right ). android:text : Texte à afficher dans l élément. Toute les chaines de caractères utilisées sont déclarées dans le ficher strings.xml et utilisées à l aide de la syntaxe @string/nom_de_la_chaine TextView android:textcolor :Couleurdutexte. Toute les couleurs utilisées sont déclarées dans le fichier colors.xml et utilisées à l aide de la syntaxe @color/nom_de_la_couleur. android:paddingtop : Marge interne du haut. android:textsize : Définie la taille du texte. EditText android:inputtype : Type du texte qui sera saisie dans la zone d édition.

Applications Java sous Android IvMad, 2011-2013 93 Application Android et XML (2) Le fichier colors.xml contient les couleurs utilisées dans l application <?xml version="1.0" encoding="utf-8"?> <resources> <color name="black_color">#000</color> </resources> Le fichier dimens.xml défini les dimensions utilisées. Les tailles déclarées sont en dp (density independant pixel) pour la taille des composants et en sp (scale independant pixel) pour la taille des polices. Les tailles en dp / sp garantissent les mêmes proportions dans les interfaces quelques soit la densité de l écran cible <resources> <dimen name="padding_small">8dp</dimen> <dimen name="padding_medium">8dp</dimen> <dimen name="padding_large">16dp</dimen> <dimen name="normal_text_size">15sp</dimen> <dimen name="normal_padding">20dp</dimen> <dimen name="large_padding">100dp</dimen> <dimen name="small_padding">10dp</dimen> </resources> Applications Java sous Android IvMad, 2011-2013 94 Application Android et XML (2) Le fichier string.xml est utilisé pour déclarer les chaines de caractères <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name"> FirstAndroidView</string> <string name="hello_world"> Bonjour tout le monde!</string> <string name="menu_settings">settings</string> <string name="title_activity_main"> MainActivity</string> <string name="image_content_description"> Logo Android</string> <string name="create_account"> Créer un compte</string> <string name="email">adresse email</string> <string name="password">mot de passe</string> <string name="connect">se connecter</string> </resources>