Android How To : Prise en Main 1 Prise en main avec Eclipse... 2 1.1 Le projet... 2 1.2 Projet propriétés... 2 1.3 Le programme... 3 2 XML Base Layout... 4 2.1 Création du layout... 4 2.2 Lier le Layout au Code Java... 4 2.3 Outils de dessin... 5 2.4 Layout Graphic mode... 5 3 Le Manifest... 6 4 Listener.... 7 5 Basic Widgets... 8 5.1 Text label... 8 5.2 Button... 8 5.3 EditView... 8 5.4 Methodes et proprieties les plus utilisées... 8 5.4.1 Propriétés... 8 5.4.2 Méthode... 8 6 Les Containers... 9 6.1 LinearLayout (the box model)... 9 6.2 Exemple... 10
1 Prise en main avec Eclipse. 1.1 Le projet Cliquer sur le premier bouton : Package name doit être unique dans la market choisir le nom de la société + nom application Activity permet de créer le pgm principal Min SDK Version : API minimum à utiliser. 1.2 Projet propriétés. Vérifier la version SDK utilisée par défaut Le mieux est de configurer le defaut via Configure Workspace setting
1.3 Le programme Le premier pgm est assez simple. Pour lancer l application à partir d eclipse Run ou CTRL+F11 ADB est lancé par Eclipse. Deux possibilités : Soit un appareil android est connecté en USB (dans mon cas, mon Archos 70 IT). Dans ce cas, ADB transfère le pkg sur l Archos et le lance l application est visible sur l appareil. Soit, aucun appareil n est connecté dans ce cas, l émulateur est lancé (il faut configuré un Android virtuel auparavant)
2 XML Base Layout XML Base layout est une spécification qui défini les relations entre Widgets (petit programme ou Windows Gadgets) et les containers. C est considéré comme ressource pour Android et donc se retrouve en dessous du répertoire : «\NowPjt\res\layout\» Chaque XML contient un arbre d éléments qui représentent une disposition de «Containers» et «Widgets» qui vont former une «Vue». Le tool «aapt» livré avec le Kit SDK Android va généré le code «R.java» Quel sont les raisons pour les quelles on préfère modifier directement le fichier XML? La première est pouvoir lire la définitions et de l éditer plus facile si cela est dans un Fichier XML. Evite de corrompre le layout par une modification du code accidentel. XML devient assez courant Microsoft's XAML, Adobe's Flex, et Mozilla's XUL on une approche similaire et mettent les layout au format XML. 2.1 Création du layout On crée un XML pour le bouton : <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text=""/> Nom de la classe : Button comme Button fait partie des Widgets Android standard, il ne fut pas préciser plus. Android Name Space : xmlns:android=http://schemas.android.com/apk/res/android Tout les autres elements seront les enfants du l élément root et hériteront du namespace. Android :id : utilisé dans le code Java. 2.2 Lier le Layout au Code Java Tout les layout sont accessible à partir de R.layout (Class R générée) On doit faire référence au fichier XML qui sera utilisé dans cette vue : setcontentview(r.layout.main); setcontentview(btn) est supprimé. Ensuite, les élément de ces Layout Widgets sont accessible en utilisant «findviewbyid». Le bouton n est plus créer comme ceci : btn = new Button(this) On utilise : btn=(button)findviewbyid(r.layout.btn01);
Le code Final : package com.commonsware.android.now; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import java.util.date; public class Now extends Activity implements View.OnClickListener { /** Called when the activity is first created. */ Button btn; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //btn = new Button(this); setcontentview(r.layout.main); btn=(button)findviewbyid(r.id.button); btn.setonclicklistener(this); updatetime(); //setcontentview(btn); public void onclick(view view) { updatetime(); private void updatetime() { btn.settext(new Date().toString()); 2.3 Outils de dessin. http://droiddraw.org/ 2.4 Layout Graphic mode Il est possible d utiliser le mode graphique
3 Le Manifest Le «manifest» contient les info utile sur votre application Permission, etc
4 Listener. Activity est la classe de base d Android L activity contient un Bouton pour attraper toutes les actions faite sur les Widgets (Bonton, etc ), il faut avoir activity : View.OnClickListener Dans le pgm, on envoie tout les Click sur ce bouton vers l instance même : btn.setonclicklistener(this);
5 Basic Widgets 5.1 Text label Il est possible de créer un label textview, mais plus souvent, on ajoutera un Text dans les layout XML au moyen de Label android :text <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="you were expecting something profound?" /> 5.2 Button Sous classe de TextView 5.3 EditView Sous classe de TextView Plus de propriétés autotext, capitalize, AutoCompleteTextView widget 5.4 Methodes et proprieties les plus utilisées. 5.4.1 Propriétés. Controls the focus sequence: android:nextfocusdown, android:nextfocusleft, android:nextfocusright, android:nextfocusup android:visibility android:background 5.4.2 Méthode. SetEnable et IsEnable désactiver des Widgets en fct de CheckBox. requestfocus() et isfocused() getparent() trouver le parent getparentoftype() recherche d un container d une classe d un certain type findviewbyid() Retrouver l object dans un XML getrootview() retrouvera le setcontentview()
6 Les Containers Les containers servent à rassembler une collection de Widgets. Android support le Box model via LinearLayout et supporte aussi une gamme de containers. LinearLayout (the box model) RelativeLayout (a rule-based model) TableLayout (the grid model) ScrollView, a container designed to assist with implementing scrolling containers 6.1 LinearLayout (the box model) the orientation colonne ou ligne the fill model android:layout_width & android:layout_height specific dimension, such as 125px wrap_content fill_parent the weight layout_weight proportion de l espace libre attribute au widgets. the gravity alignement the padding espace entre widgets.
6.2 Exemple package com.commonsware.android.now; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.button; import java.util.date; import android.widget.edittext; public class Now extends Activity implements View.OnClickListener { Button btn; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); btn=(button)findviewbyid(r.id.button); btn.setonclicklistener(this); updatetime(); EditText ETxt=(EditText)findViewById(R.id.field); public void onclick(view view) { updatetime(); private void updatetime() { btn.settext(new Date().toString()); <?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" > <Button android:id="@+id/button" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bouton"/> <EditText android:id="@+id/field" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="edit"/> android:singleline="false"/> </LinearLayout>