back to top

Widget e View: alcune osservazioni – Guida Sviluppo App Android

In questa lezione effettueremo alcune osservazioni preliminari su Widget e View.

Il package android.widget

Questo pacchetto contiene tutti gli elementi grafici (o view) che è possibile inserire in una applicazione e dunque conterrà elementi come: TextView, EditText, Button e molto altro.

Per creare un componente personalizzato è sufficiente creare una classe che estenda la classe View o una sua sotto-classe.

Ogni elemento appartenente al package android.widget ha come superclasse la classe View che altro non è che un astrazione di ciò che vedrà l’utente sullo schermo.

All’interno di una finestra di un’applicazione è possibile inserire più elementi discendenti dalla classe View e questi elementi saranno inseriti in una sorta di albero gerarchico che identifica la struttura finale dell’area visibile dall’utente.

Quali operazioni è possibile eseguire su questi elementi?

L’operazione che più frequentemente viene eseguita sulle view è quella del settaggio delle proprietà: ovvero per ogni elemento grafico sarà possibile personalizzarne le dimensioni, il contenuto testuale, la posizione all’interno della finestra e molto altro.

Altra operazione che comunemente viene eseguita è quella di associare un listener ad un particolare elemento. Un listener è un oggetto che è in grado di "rimanere in ascolto" in attesa di un evento generato dall’utente (una pratica molto comune, ad esempio, è quella di associare un oggetto listener ad un bottone per catturare la pressione dello stesso da parte dell’utente e poter compiere una determinata azione).

Il codice sorgente relativo all’associazione di un listener ad un elemento grafico sarà mostrato più volte nel corso della guida.

Nascondere elementi alla vista dell’utente

In un’interfaccia grafica spesso può essere utile nascondere determinati elementi alla vista dell’utente e farli apparire solamente quando vengono soddisfatte certe condizioni. Per esempio, in un’applicazione in cui viene richiesto all’utente di riempire un modulo, si potrebbe nascondere il bottone "Invia Modulo" e farlo apparire solamente quando tutti i campi sono stati compilati.

Per nascondere un elemento grafico è suffiente richiamare il metodo setVisibility (int visibility) dall’oggetto che si desidera nascondere.

Questa pratica di nascondere gli elementi è molto utilizzata, ma si consiglia al lettore di non abusare di questa tecnica in quando gli elementi, anche se non visibili, sono comunque istanziati e dunque risiedono in memoria. Ciò implica uno spreco di memoria che, in alcuni casi, risulta non trascurabile. Di conseguenza si consiglia di istanziare gli oggetti solo quando è realmente necessario ed utilizzare la pratica presentata precedentemente con molta parsimonia.

Rendere un oggetto "modificabile"

Facciamo adesso alcune riflessioni sul nostro progetto MyHelloWorld che, come ricorderete, stampava a video semplicimente una stringa di saluto. La view, e in particolare l’oggetto TextView che conteneva la stringa di saluto, risulta essere un "oggetto statico". Con questo attributo si intende un oggetto che non è possibile modificare durante l’esecuzione dell’applicazione e che quindi conterrà sempre lo stesso valore con cui è stato inizializzato.

Ovviamente, in un’applicazione, avremo bisogno di poter cambiare il valore di un determinato oggetto, per esempio in seguito ad un qualche evento generato dall’utente. Per poter ottenere questo comportamento è necessario:

  • nel file sorgente activity_main.xml è necessario aggiungere come proprietà dell’oggetto un id univoco (che verrà assegnato automaticamente all’atto di compilazione) che identifica l’oggetto;
  • nel file sorgente .java è necessario istanziare un oggetto dello stesso tipo di quello che abbiamo dichiarato con l’id nel file main.xml ed effettuare una sorta di collegamento tra i due invocando il metodo findViewById(R.id.nomeOggetto) (con nomeOggetto si intende il nome dell’oggetto dato nel file main.xml).

Nel prossimo capitolo mostreremo un esempio pratico di quanto esposto.

Pubblicitร 

In questa guida...