Andiamo in questo capitolo a trattare l’oggetto Toast. Esso viene utilizzato in molte applicazioni per mostrare all’utente un messaggio di durata temporanea paragonabile ad una notifica.
Un esempio di utilizzo di questo widget è quello di notificare all’utente un messaggio del tipo "salvataggio effettuato" oppure "operazione eseguita" in seguito a qualche operazione compiuta dall’utente stesso. La caratteristica di questo componente è quello di essere estramamente semplice in quanto permette di visualizzare solamente un messaggio o un’immagine senza interazioni particolari con l’utente.
Vediamo adesso il codice necessario per mostrare a video un toast con un testo da noi personalizzato. Per far ciò possiamo riprendere un vecchio progetto relativo a bottoni e listener oppure (operazione consigliata per prendere familiarità con la programmazione) riscrivere il codice relativo ad un bottone e all’associazione ad esso di un OnClickListener. Per poter utilizzare i Toast è necessario importare nel nostro progetto la classe:
android.widget.Toast
Posizioniamoci adesso all’interno del metodo OnClick ed inseriamo queste due linee di codice:
Toast mioToast = Toast.makeText(MainActivity.this,
"Questo è un Toast creato da MrWebMaster",
Toast.LENGTH_LONG);
mioToast.show();
Andiamo ad analizzare con attenzione il metodo makeText ed il prototipo del metodo che è il seguente:
makeText(Context context, CharSequence text, int duration)
Come primo parametro, il metodo richiede il contesto nel quale applicare il toast. Dato che il codice è inserito all’interno del listener non possiamo passare come contesto this in quanto passeremmo come argomento il listener stesso al quale non è applicabile un toast. E’ necessario passare come contesto l’activity principale per poter mostrare il toast a video e dunque inseriremo come parametro AcitivityMain.this. Come secondo parametro viene passato un testo che vogliamo mostrare all’utente. Infine come ultimo parametro, viene passata una costante, nel nostro caso LENGHT_LONG, che serve a specificare la durata di visibilità del Toast. Purtroppo non è possibile specificare, in questo parametro, i secondi precisi duranti i quali il Toast deve essere visibile, ma bensì è possibile scegliere solamente tra la costante vista prima e la costante LENGHT_SHORT che setta una durata della visibilità del Toast minore rispetto alla prima costante.
Ricapitolando, l’effetto della prima porzione di codice è quello di istanziare un oggetto di tipo Toast con le caratteristiche volute. Ancora, però, il Toast non è visibile. Per far ciò è necessario invocare il metodo show() sul Toast stesso.
Come possiamo vedere, nel primo esempio mostrato, non abbiamo indicato alla nostra activity dove posizionare il nostro Toast. Per utilizzare il metodo per settare la posizione del toast è necessario prima importare la seguente classe:
android.view.Gravity
Per posizionare il Toast, per esempio, al centro della schermata basta inserire questa linea di codice prima dell’invocazione del metodo show():
mioToast.setGravity(Gravity.CENTER, 0, 0);
Come possiamo vedere passiamo come primo argomento il centro dello schermo e poi viene indicato lo scostamento sull’asse x e sull’asse y dal punto precedentemente indicato.
Usare un’immagine al posto del testo
E’ possibile, come già detto, sostituire il testo del toast con un’immagine da mostrare all’utente. In questo caso, ovviamente, non sarà possibile utilizzare il metodo makeText, ma dovremo utilizzare il costruttore Toast(Context context) passando solo il contesto (quello relativo all’activity). In seguito dovremo utilizzare il metodo setView() per associare l’immagine al nostro Toast. Di seguito il codice completo per mostrare unimmagine mediante Toast:
ImageView imageForToast = new ImageView(MainActivity.this);
imageForToast.setImageResource(R.drawable.icon);
Toast mioToast = new Toast(MainActivity.this);
mioToast.setView(imageForToast);
mioToast.show();