Corso di Programmazione Android Lezione 9: Revisioni e chiarimenti
Le altre lezioni del Corso di Programmazione Android sono reperibili a questo indirizzo
Il nostro corso è a buon punto quindi ho deciso preparare una lezione dedicata agli approfondimenti teorici. Quindi chiudete Android Studio oggi niente coding.
Lezione 5: Fragment
I Fragment
Nella lezione 5 abbiamo trattato i Fragment, uno dei componenti più in voga al momento, rivediamone la definizione:
Un Fragment (frammento) rappresenta un comportamento o una porzione di interfaccia utente in un’Activity. È possibile combinare più frammenti in una sola Activity per costruire un’interfaccia utente multi-pannello e riutilizzare un frammento in molteplici attività. Si può pensare a un frammento come sezione modulare di un’attività, che ha il suo ciclo di vita, riceve i suoi eventi di input, e che è possibile aggiungere o rimuovere mentre l’attività è in funzione (come una sorta di “sub attività“ che si può riutilizzare in diverse attività).
Noi abbiamo utilizzato i fragment per Navigation Drawer e per Tab, ma potremmo creare più versioni della stessa Activity, l’esempio più gettonato è il seguente (immagine dalla documentazione ufficiale):
Pensiamo alla nostra lista di libri, al momento quando l’utente clicca su un elemento della ListView viene aperta una nuova Activity che mostra l’intero contenuto della registrazione. Se volessimo creare una versione modulare adatta anche ai Tablet prevederemmo una cosa simile a quella dell’immagini di sinistra: due fragment che vengono posizionati di fianco se il device è un tablet. Questo comportamento viene di solito utilizzato solo sui tablet (serve uno schermo grande) sugli smartphone il comportamento standard è riportato nella parte destra dell’immagine (cioè come stiamo facendo noi).
Ciclo di vita dei Fragment
Abbiamo accennato più volte al fatto che i Fragment hanno un proprio ciclo di vita indipendente da quello dell’Activity. Vediamo lo schema analogo a quello dell’Activity (sempre reperibile dalla documentazione ufficiale) che mostra il ciclo di vita e i metodi di callback associati:
Di solito nei casi in cui è previsto il riavvio dell’Activity viene ricreato anche il Fragment.
Lezione 6: I database
La sesta lezione è una delle più lunghe e corpose quindi, almeno per quanto riguarda i Database, c’è poco da aggiungere, vi posto però un link Wikipedia relativo a SQLite il database che viene utilizzato sulla piattaforma Android.
ListView e Adapter
All’interno della nostra applicazione abbiamo utilizzato delle ListView alle quali abbiamo associato un adapter, non ci siamo dilungati troppo sull’argomento, vediamo di colmare anche questa lacuna.
Come sicuramente avrete intuito una ListView è un particolare tipo di View che permette di mostrare una lista di dati seguendo un determinato layout. Il disegno del layout da associare alla lista e il posizionamento dei dati al suo interno vengono definiti grazie all’adapter. Nel nostro caso usiamo un SimpleCursorAdapter, specifico per i database che permette anche di specificare quali campi del database mostrare.
Non ho ancora deciso se trattare i RecycleView all’interno di questo corso o se creare un Adapter personalizzato, accetto suggerimenti/richieste.
Intent e Intent Filter
Nella lezione 6 trattiamo anche gli Intent e gli Intent Filter, facciamo un ripasso.
Cosa si intende per Intent (dalla documentazione ufficiale)?
Un Intent è definito come una “descrizione astratta di un’operazione da eseguire”. In pratica indica l’intenzione di voler effettuare un’azione su un dispositivo Android; l’azione da eseguire spesso coincide con il lancio di una Activity ma può essere anche legata a un Service o a un BroadcastReceiver. (capiremo di cosa stiamo parlando più avanti)
Un Intent può essere di due tipi:
- esplicito: quando creiamo l’Intent dobbiamo specificare la classe da eseguire;
- implicito: specifichiamo l’azione da eseguire senza sapere chi sarà il destinatario.
Questo tipo di Intent è alla base di Android e permette di scrivere applicazioni che interagiscono fra di loro senza conoscersi. Un esempio è costituito dalle varie applicazioni che gestiscono gli SMS, tutte rispondono all’Intent per inviare SMS. Quando una qualunque applicazione vuole mandare un SMS lancia un Intent di scrittura senza sapere quale applicazione sarà effettivamente eseguita. Ciò evita di dover scrivere migliaia di sottoprogrammi per fare cose già previste dal sistema o scritte da altri.
Almeno una volta nella vostra carriera di utenti Android vi siete trovati davanti ad un intent filter, il classico dialog “esegui l’azione con” che mostra la lista delle applicazione da usare per un determinato evento, quelle che vedete sono tutte le app installate che hanno registrato un intent filter legato a quell’azione.
Generali
All’interno della nostra applicazione abbiamo utilizzato un layout particolare, il CoordinatorLayout che ha di speciale? Molto, infatti grazie a questo layout possiamo far si che i componenti dell’interfaccia si coordino fra di loro. Sarà più chiaro con un esempio.
Quando Android Studio crea un’Activity segue i dettami del Material Design quindi prepara un’interfaccia con 3 componenti: un CoordinatorLayout, una Toolbar e un Floating Action Button. All’interno del codice Java definisce l’apertura di una Snackbar (una piccola striscia contente un testo) alla pressione del pulsante FAB. Eseguendo un’Activity disegnata in questo modo possiamo notare che alla comparsa della Snackbar il nostro pulsante rotondo sale per far posto al nuovo componente, questo comportamento è dovuto alla coordinazione imposta dal CoordinatorLayout. Nella prossima lezione vedremo come grazie, alla coordinazione possiamo, far scomparire la toolbar come in figura.
Ebbene di si mia madre si da alle letture difficili e ha dei problemi con i prestiti (soprattutto quando i libri sono suoi)
Per adesso abbiamo finito, come anticipato nella prossima lezione approfondiremo il CoordinatorLayout e Dialog Fragment per la modifica delle registrazioni.
Precedentemente pubblicato su Be Geek My Friend.