Академический Документы
Профессиональный Документы
Культура Документы
Chapitre 3 bis
Les interfaces utilisateurs
avancs avec Android
JMF (Tous droits rservs) 2
Les IHM des smartphones
en 2012
Acclromtre
GPS
SMS
Tlphone
JMF (Tous droits rservs) 3
Rvision de lpisode
prcdent
0emar-ue ' les R. sont des int -ui ont t gnr par l*environnement
dans le #ichier R.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...
<TextView
...
android:id="@+id/text1" />
setContentView(R.layout.mon_ihm);
TextView tx = (TextView) findViewById(R.id.text1);
JMF (Tous droits rservs) 4
!aille " diffrence entre p#$
dp$ dip$ sp %1&3'
pt ' Points 1 4567 o# an inch 2ased on the physical si3e o# the screen
source '
http://stackoverflow.com/questions/2025282/differe
nce-of-px-dp-dip-and-sp-in-android
JMF (Tous droits rservs) 5
!aille " diffrence entre p#$
dp$ dip$ sp %2&3'
source '
http://stackoverflow.com/questions/11667907/android-
emulator-failed-to-allocate-memory-8/11868277#11868277
JMF (Tous droits rservs) 6
!aille " diffrence entre p#$
dp$ dip$ sp %3&3'
source '
http://stackoverflow.com/questions/2025282/differe
nce-of-px-dp-dip-and-sp-in-android
JMF (Tous droits rservs) 7
Les bouton radios
source '
developper.android.com/docs/guide/topics/ui/themes.html
JMF (Tous droits rservs) 10
)parer contenu et aspect
avec les st*les
Au lieu d*crire
on crira plut"t
et les in#ormations de style sont repres par l*identi#icateur
CodeFont
(ha-ue style est un lment $M% style9 %e nom du style est la valeur de
l*attri2ut name9 l contient une suite de sous lments item prcisant une
partie du style9 %e corps de la 2alise item est la valeur de cet item
%es styles peuvent Atre rangs par ar2orescence9 ,n le prcise par l*attri2ut
(optionnel) parent
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
</style>
</resources>
JMF (Tous droits rservs) 12
Hrita-e des st*les
8#inir une nouvelle valeur pour un attri2ut de style crase l*ancienne valeur
(si elle e&iste) pour cet attri2ut
,n peut hriter de styles prd#inis par Android et, dans ce cas, on utilise
parent comme dans '
,n peut hriter de ses propres styles et, dans ce cas, on utilise la notation .
comme dans '
%e style d#ini est CodeFont.Red9 l rcupre les valeurs du style
CodeFont9 ,n l*utilise comme dans @style/CodeFont.Red
(es composants sont trs utiles si les donnes -u*ils a##ichent ne sont pas
connues + la cration du programme mais seront charges dynami-uement
Pour #ournir les items + ces composants graphi-ues, on utilise des Adapter
%es AdapterView grent aussi les vnements (i9e9 les interactions) sur le
composant graphi-ue avec le-uel ils sont associs9 (*est + la #ois un design
pattern vue et controleur
JMF (Tous droits rservs) 16
AdapterView$ Adapter et
compa-nie . %1&2'
android.widget.AdapterView<T extends
android.widget.Adapter> est une classe a2straite gnri-ue
,n a donc '
JMF (Tous droits rservs) 18
!utoriau# pour les
AdapterView
Spinner '
http://developer.android.com/guide/topics/ui/controls/
spinner.html
Gallery ' est, en #ait, dprcie + partir de l*AP 4:9 l #aut utiliser des
HorizontalScrollView et des ViewPager
GridEie< '
http://developer.android.com/guide/topics/ui/layout/gr
idview.html
%istEie< '
http://developer.android.com/guide/topics/ui/layout/li
stview.html
JMF (Tous droits rservs) 19
Spinner
A partir de
4K) est o2tenu par
<Spinner
android:id="@+id/spnMusketeers"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="2dp"
/>
Spinner spnMusketeers = (Spinner) findViewById(R.id.spnMusketeers);
JMF (Tous droits rservs) 21
Spinner " construction de
lIHM %2&3'
?K) crer l*adapter associ + cette liste est o2tenu par '
Sait apparaMtre ses lments comme des ta2leau& dans une gallerie
(d*art)
%a mthode
public void onItemClick (AdapterView<?> parent,
View view, int position, long id) + implmenter a pour
arguments '
Dne ListView peut occuper tout l*cran9 8ans ce cas, elle peut Atre
construite + partir d*une android.app.ListActivity (-ui hrite de
android.app.Activity)
Dne ListView peut Atre construite + partir d*une Activity (et pas
d*une ListActivity)
Pour-uoi la mthode
public void setOnItemClickListener
(AdapterView.OnItemClickListener listener)
-ui demande comme argument un AdapterView.OnItemClickListener peut
Atre utilis par le code '
lv.setOnItemClickListener(new OnItemClickListener() { ... });
J
0ponse ' (ar Eclipse aCoute, aprs S!ST Y (T0% Y ,, le 2on import
import android.widget.AdapterView.OnItemClickListener;
Merci Sa2rice N
JMF (Tous droits rservs) 47
6#ercice
Et donc l*analyse $M% du #ichier d*!M est #aite pour cha-ue item 999
Dne %istEie< garde trace des Eie< de cha-ue item dC+ construit9 (*est une
rserve de .ScrapEie<. '
.ScrapEie<s are old vie<s that could potentially 2e used 2y the adapter to avoid
allocating vie<s
unnecessarily. (https://github.com/android/platform_frameworks_b
ase/blob/43ee0ab8777632cf171b598153fc2c427586d332/core/java/
android/widget/AbsListView.java#L5764)
8ans une application Android, il e&iste une et une seule thread -ui
gre l*inter#ace graphi-ue ' la D Thread (Dser nter#ace Thread)
Tout ce -ui concerne l*a##ichage est (et doit Atre) gr par cette
Thread9 Si une autre Thread s*occupe de #aire de l*a##ichage
graphi-ue, il y a erreur + l*e&cution
Elle est #aite pour grer correctement la gestion entre une thread
(de traitement long) et la D Thread
(ette classe contient L mthodes dont trois d*entre elles sont e&cutes
dans la D Thread9 (e sont ' onPreExecute(),
onProgressUpdate(Progress...), onPostExecute(Result) -ui
sont e&cutes dans la D Thread et doInBackground(Params...) lanc
dans une autre thread
Pour utiliser cette classe, il #aut la sous classer, construire une instance de
cette sous1classe et lancer la mthode de type execute(Params ...) sur
cette instance
%a sous classe cre est souvent une sous1classe interne + une mthode