Programmare Android

Java – Programmiamo in stile Holo

Roberto Orgiu

Dall’uscita di Android Ice Cream Sandwich uno dei parametri di giudizio per quanto riguarda le applicazioni è, senza ombra di dubbio, lo stile che ha usato lo sviluppatore, in altre parole se rispetta le guidelines fornite da Google ed è in stile Holo oppure no; ma come facciamo ad utilizzare queste linee guida?

Quello che vedremo in questo tutorial è come creare delle activity che usino l’Action Bar e vedremo come posizionarla sopra o sotto (come fa GMail, insomma) rispetto alla nostra Activity, come possiamo vedere nell’immagine qui sotto.

Ingrandendo l’immagine (con un click su di essa) notiamo due particolari nella parte di sinistra: l’icona cliccabile in alto a sinistra e la barra delle icone in basso.

Iniziamo proprio da quest’ultima, che è la trasposizione grafica di un file XML salvato in res/menu contenente una serie di item che rappresentano proprio quelle icone:

<item android:id=”@+id/menu_settings”
android:title=”@string/menu_settings”
android:orderInCategory=”1″
android:showAsAction=”ifRoom|withText” android:icon=”@drawable/action_settings”/>

Per questo tutorial abbiamo semplicemente modificato il file che viene automaticamente creato da Eclipse quando specifichiamo, durante la creazione del progetto, di usare le API di ICS come requisito minimo.

Analizzando il listato, notiamo sostanzialmente solo due istruzioni che possono suscitare qualche perplessità: orderInCategory, che specifica l’ordine delle icone nel menù e showAsAction, che specifica alla nostra applicazione come deve mostrare questi pulsanti; nello specifico, l’applicazione mostra il bottone se ha spazio, altrimenti lo metterà come elemento del menu a tendina che si apre cliccando i tre puntini verticali in alto sulla destra.

A questo punto, abbiamo appurato come creare un menù, quindi possiamo spostarlo in basso semplicemente aggiungendo il parametro uiOptions all’Activity nel file Manifest

<activity
android:name=”.MainActivity”
android:configChanges=”orientation|keyboardHidden|keyboard”
android:label=”@string/title_activity_main”
android:uiOptions=”splitActionBarWhenNarrow” >

Ecco fatto, il menù è pronto e possiamo occuparci del Java.

Andando a scorrere il codice della nostra Activity, notiamo subito una nuova istruzione nel metodo onCreate

getActionBar().setDisplayHomeAsUpEnabled(true);

questa riga ci permette di utilizzare l’icona in alto a sinistra come specifica nelle linee guida, e la andiamo a gestire come un bottone del menu, impostando un case apposta per l’id android.R.id.home. Di default, Eclipse ci risparmia questo compito andando a scrivere il codice che si occupa della gestione di questa procedura, ma possiamo sempre modificarlo e far sì che l’applicazione esca se si trova alla prima Activity.

Scorrendo verso il basso di poche righe, notiamo che all’Intent per lanciare la seconda Activity è stato assegnato un flag FLAG_ACTIVITY_CLEAR_TOP, che forza il software a modificare lo stack delle chiamate, in modo tale che, premendo il bottone in alto a sinistra, si torni all’Activity chiamante e si esca premendo il tasto back, senza rischio di finire in un’altra finestra della nostra applicazione lanciata precedentemente.

Intent intent = new Intent(this,SettingsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Per chi volesse provare l’applicazione, la può scaricare, come al solito, dal Play Store, mentre i sorgenti sono reperibili nell’apposito thread del nostro forum.

[app]it.tiwiz.fragment.activitybar.example[/app]

Via: Via