Android 3 guida per lo sviluppatore
Apogeo
- Volumi: 1
- Data Pubblicazione: 10/2011
- Lingua: italiano
- Livello: Intermedio Avanzato
- Pagine: 604
- Collana: Guida completa
- Autore: Massimo Carli
La versione 3 di Android, il sistema operativo open source di Google dedicato ai dispositivi mobili, apre agli sviluppatori un mondo di nuove possibilità. Android 3 introduce novità già a partire dall'interfaccia utente, completamente rinnovata e arricchita dal punto di vista grafico e funzionale, ma soprattutto sfrutta le nuove possibilità offerte dai tablet: display di dimensioni maggiori e processori più potenti.
Il testo si articola in un percorso formativo che parte dalla scoperta dell'ambiente di sviluppo entrando poi nel vivo delle possibilità offerte dalla piattaforma e insegnando come gestire l'interfaccia, le comunicazioni tra le componenti, l'interazione con il Web, per arrivare a illustrare metodi di programmazione avanzata.
Questa guida accompagna il lettore alla scoperta degli strumenti necessari a progettare e realizzare applicazioni funzionali per le diverse tipologie di device, smartphone e tablet, prendendo come riferimento Android 2.3 Gingerbread e Android 3.2 Honeycomb.
Argomenti in breve:
L'autore
Massimo Carli, cofondatore di Mokabyte e socio JIA (Java Italian Association), progetta e sviluppa applicazioni Java dal 1995. Ha maturato esperienze di insegnamento presso l’Università di Padova per il corso di Diploma di Ingegneria Informatica. Dal 2004 è docente di Sun Microsystems per i corsi relativi alle tecnologie Java, XML, Web Services, GlassFish e Web 2.0. Attualmente il suo interesse è orientato verso la realizzazione di applicazioni in ambito mobile sia per la piattaforma Apple iOS, sia per Android, che segue fin dai suoi primi sviluppi. Per Apogeo è autore di Sviluppare applicazioni per Android.
Indice generale
Prefazione ...................................................................................................xv
Introduzione .................................................................................................xvii
Struttura del libro........................................................................xvii
A chi è rivolto questo libro...........................................................xix
Riferimenti e indicazioni tecniche.................................................xx
Risorse online...............................................................................xx
Ringraziamenti..............................................................................xx
Capitolo 1 Introduzione ad Android................................................................1
Che cos’è Android..........................................................................2
Una storia ormai lunga..............................................................3
Android e Java...........................................................................5
Confronto con J2ME.................................................................7
La Dalvik Virtual Machine..............................................................9
L’architettura di Android................................................................11
Il kernel di Linux......................................................................12
Librerie native..........................................................................13
Surface Manager..................................................................13
OpenGL ES........................................................................13
SGL....................................................................................14
Media Framework...............................................................14
FreeType.............................................................................14
SQLite................................................................................15
WebKit...............................................................................15
SSL.....................................................................................16
Libc....................................................................................16
Le core library..........................................................................16
Application framework.............................................................16
Activity Manager.................................................................16
Package Manager.................................................................17
Window Manager...............................................................17
Telephony Manager.............................................................17
Content Provider................................................................17
Resource Manager..............................................................17
View System.......................................................................18
Location Manager...............................................................18
Notification Manager..........................................................18
Conclusioni...................................................................................18
Capitolo 2 Anatomia di un’applicazione Android............................................19
Preparazione dell’ambiente............................................................19
Installazione dell’SDK...............................................................20
Gestione degli aggiornamenti...................................................22
Creazione di un progetto Android.............................................25
Utilizzo dell’emulatore e di Android Virtual Device...................35
Il file AndroidManifest.xml.......................................................42
Installazione degli Android Development Tools...............................45
Utilizzo del plug-in ADT.........................................................48
Gestione visuale delle risorse...............................................52
Esecuzione in un dispositivo reale..................................................55
Debug e logging di un’applicazione...............................................57
Abilitazione/disabilitazione del log............................................59
Android Debug Bridge..................................................................61
Conclusioni...................................................................................62
Capitolo 3 Componenti e risorse....................................................................63
I componenti di Android...............................................................64
Activity....................................................................................64
Intent e Intent Filter.................................................................65
BroadCast Intent Receiver........................................................66
Service.....................................................................................66
Content Provider......................................................................67
Architettura di un’applicazione.................................................68
Le risorse.......................................................................................68
Risorse di tipo Layout..............................................................72
Risorse elementari....................................................................77
String, String array e Integer array.......................................77
Format e plurali...................................................................83
Color..................................................................................85
ColorStateList.....................................................................87
Dimension..........................................................................88
Gestione automatica delle dimensioni..................................90
Gestione degli stili e dei temi...............................................93
Definizione di stili e temi con il plugin................................95
Risorse Drawable.....................................................................98
BitMapDrawable...............................................................100
ColorDrawable..................................................................101
GradientDrawable.............................................................102
ClipDrawable....................................................................104
NinePatchDrawable...........................................................105
LevelListDrawable.............................................................108
StateListDrawable..............................................................109
AnimationDrawable...........................................................110
Drawable senza XML........................................................112
Risorse associate a file.............................................................113
Assets................................................................................113
Risorse XML....................................................................115
Risorse Raw.....................................................................117
Altri tipi di risorse..................................................................118
Configurabilità delle risorse e I18N........................................119
Qualificatore e ADT..........................................................124
Conclusioni.................................................................................125
Capitolo 4 Activity e Intent.........................................................................127
Activity.......................................................................................127
Ciclo di vita di una Activity....................................................128
I metodi di callback...........................................................130
Terminazione di una Activity.............................................136
Un caso particolare: la modifica dell’orientation.................140
La gestione dei processi e il concetto di task.................................142
I task......................................................................................143
Intent..........................................................................................144
Intent espliciti.........................................................................144
Task affinity e modalità di lancio.............................................146
Utilizzo della Action...............................................................150
Intent e dati............................................................................153
Utilizzo della categoria...........................................................158
La gestione degli Extra............................................................162
Comunicazione tra Activity.........................................................163
Activity particolari.......................................................................166
LauncherActivity....................................................................167
AliasActivity...........................................................................167
Conclusioni.................................................................................170
Capitolo 5 View e Layout.............................................................................171
Le View.......................................................................................171
ViewGroup e Layout...................................................................178
I Layout predefiniti.................................................................179
LinearLayout.....................................................................180
viii Android 3
RelativeLayout..................................................................187
TableLayout.......................................................................189
FrameLayout.....................................................................191
AbsoluteLayout.................................................................193
Realizzare Layout personalizzati..............................................193
Algoritmo di definizione del layout...................................193
Definizione di attributi personalizzati................................195
Utilizzo del layout nel template XML................................197
Una specializzazione della classe ViewGroup......................199
Utilizzo nella Activity........................................................203
Componenti personalizzati nel layout editor......................203
ViewGroup per i dati...................................................................205
Adapter..................................................................................206
AdapterView..........................................................................208
ListAdapter, ArrayAdapter e ListView..............................209
ListActivity.............................................................................216
SimpleAdapter........................................................................219
GridView...............................................................................221
ExpandableListAdapter e ExpandableListView........................222
ScrollView..............................................................................225
Spinner e Gallery....................................................................228
TabHost,TabWidget e TabActivity..........................................233
Ottimizzazione delle risorse.........................................................238
Utilizzare il tool Hierarchy Viewer..........................................238
TextView compound Drawable...............................................243
Ottimizzazione del layout con layoutopt............................247
Utilizzo di .............................................................247
Include e layout editor.......................................................249
Utilizzo di ..............................................................250
Le ViewStub...........................................................................252
Conclusioni.................................................................................253
Capitolo 6 Widget ed eventi........................................................................255
La gestione degli eventi................................................................255
Eventi delle View....................................................................259
I listener della classe View..................................................260
Event Handler...................................................................262
Utility per la gestione degli eventi......................................263
L’attributo android:onClick...............................................263
I widget.......................................................................................264
La classe TextView.......................................................................265
Gestione dello stato................................................................265
TransformationMethod...........................................................265
CharSequence, Spanned e Spannable.......................................266
Linkify...................................................................................268
La classe HTML.....................................................................272
Indice generale ix
Ellipsizing...............................................................................273
Hint.......................................................................................275
Typeface.................................................................................275
La classe EditText.........................................................................275
Gestione dello stato dei widget standard..................................278
Selezioni.................................................................................279
Componenti con autocompletamento.....................................279
MultiAutoCompleteTextView................................................282
Button.........................................................................................282
CompoundButton e Checkable..............................................283
CheckBox..............................................................................283
RadioButton..........................................................................285
ToggleButton.........................................................................286
CheckedTextView e ListView......................................................287
Altri controlli...............................................................................289
ImageView e ImageButton.....................................................289
AnalogClock e DigitalClock...................................................293
Realizzare Custom View..............................................................293
Identificazione dell’eventuale specializzazione di una View esistente.............295
Identificazione degli eventuali attributi e inflating...................295
Personalizzazione dell’eventuale Drawable...............................297
Definizione delle operazioni del componente.........................297
Personalizzazione degli eventuali eventi...................................298
Definizione della fase di measuring.........................................299
Definizione delle modalità di rappresentazione........................299
Conclusioni.................................................................................300
Capitolo 7 Animation, Menu, Dialog e Toast.................................................301
Property Animation.....................................................................301
Come funziona.......................................................................302
La classe ObjectAnimator.......................................................310
Animazioni composte con la classe AnimatorSet......................311
Definizione dichiarativa delle animazioni................................312
Animation (legacy)......................................................................314
Animazioni dei layout.............................................................318
Tipi di animazioni tween...................................................318
Durata e startOffset...........................................................319
Tempo di applicazione della trasformazione.......................320
Modalità di ripetizione......................................................320
Gestione dell’asse Z...........................................................321
Interpolator.......................................................................321
Utilizzo di una ScaleAnimation.........................................322
RotateAnimation..............................................................326
TranslateAnimation...........................................................327
AlphaAnimation................................................................327
AnimationSet....................................................................328
Animazioni delle View............................................................329
Utilizzo della Camera........................................................332
Animator................................................................................333
Menu..........................................................................................334
Options Menu........................................................................335
Creazione del menu..........................................................335
Selezione di un MenuItem................................................342
Gestione dei SubMenu......................................................344
Utilizzo di Shortcut...........................................................346
ContextMenu.........................................................................346
Menu alternativi.....................................................................351
Definizione dichiarativa dei menu...........................................354
Toast............................................................................................356
Dialog.........................................................................................359
Utilizzo di un Dialog..............................................................359
Alert Dialog...........................................................................361
Progress Dialog.......................................................................364
CustomDialog........................................................................366
Conclusioni.................................................................................367
Capitolo 8 Gestione dei dati........................................................................369
Preferences..................................................................................369
Gestione di file............................................................................375
Accesso al file system locale....................................................376
File su SD Card......................................................................379
Creazione di una SD Card attraverso AVD.........................379
Creazione di SD Card attraverso mksdcard........................380
Utilizzo della SD Card nell’emulatore................................380
Un esempio.......................................................................381
Lettura di un file statico da apk...............................................381
SQLite.........................................................................................382
Gestione di un database SQLite..............................................382
Ciclo di vita di un database SQLite....................................382
Creazione delle tabelle.......................................................385
Esecuzione di query di update...........................................387
Estrazione dei dati.............................................................390
Utilizzo di un Cursor........................................................390
Esecuzione di query raw....................................................392
Gestione delle transazioni..................................................392
Utilizzare un SQLiteQueryBuilder.........................................394
La classe SQLiteOpenHelper..................................................396
Un esempio di CRUD...........................................................397
ContentProvider..........................................................................400
Realizzazione di un Content Provider....................................402
Definizione dei MetaData.................................................402
Realizzazione della classe ContentProvider........................404
Associazione tra URI e Mime-Type..................................405
Implementazione dell’operazione di query()......................407
Implementazione dell’operazione di insert().......................408
Implementazione dell’operazione di update().....................409
Implementazione dell’operazione di delete()......................410
Registrazione del ContentProvider
nell’AndroidManifest.xml..................................................410
Utilizzo di un ContentProvider..............................................410
I ContentProvider di Android.................................................412
Live Folder..................................................................................413
Conclusioni.................................................................................419
Capitolo 9 Multithreading e servizi.............................................................421
Thread: concetti base...................................................................422
Handler e Looper........................................................................425
Schedulazione di task..............................................................428
Looper...................................................................................428
La classe AsyncTask.................................................................430
Notification Service.....................................................................435
Creazione di una Notification.................................................436
Aggiunta di un suono........................................................438
Utilizzo della vibrazione....................................................438
Utilizzo dei LED...............................................................439
Altre configurazioni...........................................................439
Invio della notifica con il NotificationManager.......................440
Layout personalizzato per le Notification................................441
I componenti Service...................................................................442
Servizi locali...........................................................................443
Utilizzare la classe IntentService........................................448
Servizi remoti.........................................................................449
Definizione dell’interfaccia AIDL......................................451
Utilizzo di ADT per la generazione di Stub.......................455
Implementazione dell’interfaccia associata al servizio..........456
Implementazione del servizio............................................457
Definizione del servizio in AndroidManifest.xml...............457
Realizzazione del client..........................................................458
Broadcast Receiver......................................................................460
Utilizzare i Loader.......................................................................462
Conclusioni.................................................................................468
Capitolo 10 Utilizzo della rete e sicurezza......................................................469
Accesso a servizi HTTP...............................................................469
Invio di richieste in GET........................................................472
Condivisione di uno stesso HttpClient....................................474
Invio di richieste in Post.........................................................477
Android e la sicurezza..................................................................479
Gestione dei Permission..........................................................479
Creazione di Permission personalizzati...............................481
Utilizzo di un Permission personalizzato............................482
Un semplice esempio........................................................483
Conclusioni.................................................................................487
Capitolo 11 WebView e MapView..................................................................489
WebKit........................................................................................489
La classe WebView..................................................................489
Funzioni di navigazione.....................................................494
Impostazioni......................................................................495
Utilizzo di JavaScript.........................................................495
Visualizzazione delle mappe.........................................................497
MapView e MapActivity........................................................497
Personalizzazione di una MapView....................................502
Personalizzazione di una MapView....................................507
Sistemi di georeferenziazione..................................................509
Integrazione con il GPS e LocationManager...........................512
Conclusioni.................................................................................515
Capitolo 12 App Widget, Gesture e TextSpeech...............................................517
Le App Widget.............................................................................517
Creazione del layout...............................................................518
Definizione dell’App Widget Provider....................................519
Impostazione dei metadati......................................................522
Definizione dell’App Widget nel Manifest...............................523
Realizzazione di Activity di amministrazione..........................526
AppWidget e Collection.........................................................530
Realizzazione del layout....................................................532
Creazione di un’implementazione
di RemoteViewsService....................................................532
Creazione dell’AppWidgetProvider...................................533
Creazione di un’implementazione
di RemoteViewsFactory....................................................535
Definizione dei metadati dell’AppWidget..........................538
Registrazione dell’AndroidManifest.xml............................538
Test di esecuzione..............................................................539
Gestire la selezione degli item............................................539
Le gesture....................................................................................543
Utilizzo del Gestures Builder..................................................544
Caricamento e utilizzo delle informazioni delle gesture...........546
TextToSpeech..............................................................................548
Personalizzazione del TextToSpeech........................................551
Conclusioni.................................................................................552
Capitolo 13 Programmare i tablet.................................................................553
A cosa servono i Fragment...........................................................554
Anatomia di un Fragment............................................................555
Il ciclo di vita di un Fragment.................................................556
L’esempio in esecuzione..........................................................561
L’elemento e la gestione dello stato.....................565
FragmentManager e FragmentTransaction...............................572
Utilizzo della FragmentTransaction....................................573
Interazione con il back stack..............................................580
Salvataggio di un Fragment nel Bundle..............................581
La classe ListFragment.............................................................581
FragmentTransaction e animazioni.....................................582
Comunicazione tra Fragment e Activity..................................583
La classe DialogFragment........................................................584
Utilizzare la ActionBar.................................................................587
La gestione delle Action..........................................................589
ActionBar e Home dell’applicazione..................................592
Action e Fragment............................................................593
Gestire le ActionView.............................................................595
Utilizzare l’ActionBar con i tab...............................................597
Conclusioni.................................................................................600
Indice analitico .................................................................................................601