Android SDK: come creare layout differenti a seconda del device

Roberto Orgiu
Roberto Orgiu
Android SDK: come creare layout differenti a seconda del device

Quanti di noi si sono chiesti come sia possibile che la stessa applicazione di GMail abbia layout differenti a seconda del dispositivo su cui viene lanciato? La risposta è semplice, in quanto Android gestisce in maniera egregia i vari layout e con un po' di accortezza, anche le nostre applicazioni possono sfruttare lo stesso principio.

Tenendo presente che programmare con più layout può risultare in una progettazione molto più complessa (vi sono tecniche di programmazione che aiutano in questo frangente ma esulano dagli argomenti di questo tutorial), andiamo a scalfire la superficie di questo interessante argomento e creiamo subito un nuovo progetto in Eclipse, in modo del tutto analogo rispetto a quello che facciamo di solito.

A questo punto, prima di andare ad agire sul codice, una spiegazione è d'obbligo: gli ingegneri di Google ci mettono a disposizione alcune parole chiave per specificare le nostre risorse e esattamente come nella cartella values-it inseriamo il file XML contenente le stringhe italiane della nostra applicazione, così possiamo usare questi qualificatori per specificare al nostro APK quale layout utilizzare.

Se volessimo creare un layout portrait per i tablet da 10 pollici, sarebbe quindi opportuno utilizare una cartella layout-xlarge-port. Una piccola ma importante precisazione: non sarà necessario specificare un layout per ogni singolo dispositivo, in quanto il nostro robottino provvederà da sè a caricare il layout che meglio si adatta al device in questione, a patto che il nome della cartella sia corretto.

Terminate le spiegazioni, non ci resta che copiare e incollare alcune volte la cartella layout contenuta in res e rinominarla nei seguenti modi:

  • layout-land (layout normale per smartphone tenuti in landscape)
  • layout-large (per dispositivi da 5 a 7 pollici approssimativamente)
  • layout-xlarge (tablet da 10 pollici)
  • layout-small (per telefoni con uno schermo più piccolo)

In modo da ottenete una cartella res che assomigli a quella nell'immagine qui di seguito.

A questo punto possiamo modificare i nostri layout e avremo diverse disposizioni (ed elementi, volendo) a seconda del device su cui faremo girare la nostra applicazione.

Per comodità, abbiamo creato alcuni screenshot presi da un LG Optimus Dual e abbiamo caricato sul Play Store l'applicazione già compilata che potrete far girare sui vostri dispositivi per provarla con tablet e smartphone, ricordandovi che nell'apposito post del forum sono stati caricati anche i sorgenti relativi a questo tutorial.

[app]androidworld.it.layoutdemo[/app]