Passa ai contenuti principali

Android Studio - Dimensione schermo

Abbiamo visto in alcuni articoli che è possibile modificare il layout e altri aspetti della propria app in base alle dimensioni dello schermo utilizzando Smallest Screen Width.

In questo articolo approfondiremo l'uso di Smallest Screen Width e del suo significato.

Maggiori informazioni si possono trovare a questo indirizzo ed anche a questo indirizzo (in inglese)

I dispositivi Android sono disponibili in diverse dimensioni dello schermo (telefoni, tablet, TV e così via), ma i loro schermi hanno anche diverse dimensioni di pixel.
Se non si considerano queste variazioni nella densità dei pixel, il sistema potrebbe ridimensionare le immagini o le immagini potrebbero apparire con dimensioni completamente errate.

Per preservare la dimensione visibile dell'interfaccia utente su schermi con densità diverse, è necessario progettare l'interfaccia utente utilizzando pixel indipendenti dalla densità (dp) come unità di misura.
Un dp è un'unità di pixel virtuale che è circa uguale a un pixel su uno schermo a media densità (160 dpi è la densità "base"). Android traduce questo valore nel numero appropriato di pixel reali per ogni altra densità.
Questi sono i valori standard di densità in Android:
  • 120 dpi - 0,75 volte la densità "base" - ldpi
  • 160 dpi - densità "base" - mdpi
  • 240 dpi - 1,5 volte la densità "base" - hdpi
  • 320 dpi - 2 volte la densità "base" - xhdpi
  • 480 dpi - 3 volte la densità "base" - xxhdpi
  • 640 dpi - 4 volte la densità "base" - xxxhdpi
Questi valori di densità sono molto utili quando abbiamo a che fare con le immagini perché dovremmo creare la stessa immagine per ogni tipo di densità schermo. Ad esempio una immagine 48x48 pixel per mdpi devono essere create tutte le altre immagini per le diverse densità.
  • 36x36 - 0,75 volte la densità "base" - ldpi
  • 48x48 - densità "base" - mdpi
  • 72x72 - 1,5 volte la densità "base" - hdpi
  • 96x96 - 2 volte la densità "base" - xhdpi
  • 144x144 - 3 volte la densità "base" - xxhdpi
  • 192x192 - 4 volte la densità "base" - xxxhdpi

Ora vediamo un semplice codice per capire meglio questi numeri:
  • applicationContext.resources.displayMetrics - contiene le informazioni principali dello schermo attuale
  • density - è il rapporto di densità dello schermo
  • xdpi - sono i pixel fisici esatti per pollice dello schermo nell'asse X
  • ydpi - sono i pixel fisici esatti per pollice dello schermo nell'asse Y
  • widthPixel - è la larghezza assoluta della dimensione di visualizzazione disponibile in pixel
  • heightPixels - è l'altezza assoluta della dimensione di visualizzazione disponibile in pixel
  • screenWidth - è larghezza relativa della dimensione di visualizzazione disponibile in pixel tenendo conto del rapporto di densità
  • screenHeight - è l'altezza relativa della dimensione di visualizzazione disponibile in pixel tenendo conto del rapporto di densità
Altro aspetto importante per definire il layout di una applicazione è Smallest Screen Width che è possibile ricavare utilizzando queste righe di codice: Il valore della variabile ssw è quello che può essere usato quando creiamo dei file resources utilizzando l'attributo identificativo Smallest Screen Width.

Ecco come altri valori di larghezza schermo (Smallest Screen Width) corrispondono alle dimensioni tipiche di schermo:
  • 320dp: un tipico schermo di telefono (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, ecc.)
  • 480dp: un grande schermo di telefono ~ 5"(480x800 mdpi)
  • 600dp: un tablet da 7 "(600x1024 mdpi)
  • 720dp: un tablet da 10 "(720x1280 mdpi, 800x1280 mdpi, ecc.)


Ecco l'esempio pratico:

Aspetto del testo su uno schermo:
  • Density factor = 0,75x
  • dpi = 120 dpi (0,75 volte densità "base")
  • Smallest Screen Width = 320dp

  • Density factor = 3,5x
  • dpi = 560 dpi (3,5 volte densità "base")
  • Smallest Screen Width = 411dp

Aspetto del testo su uno schermo:
  • Density factor = 2x
  • dpi = 320 dpi (2 volte densità "base")
  • Smallest Screen Width = 360dp

Aspetto del testo su uno schermo:
  • Density factor = 2x
  • dpi = 320 dpi (2 volte densità "base")
  • Smallest Screen Width = 600dp

Questo esempio è stato fatto per capire meglio come funziona la gestione dello schermo in Android. Ho creato tre file di tipo dimens.xml differenziandoli con l'attributo Smallest Screen Width in questo modo:
  • dimens.xml - è il file che contiene la dimensione del testo su uno schermo con Smallest Screen Width fino a 359dp
  • dimens.xml (sw360dp) - è il file che contiene la dimensione del testo su uno schermo con Smallest Screen Width = 360dp in poi
  • dimens.xml (sw400dp) - è il file che contiene la dimensione del testo su uno schermo con Smallest Screen Width = 400dp in poi
Ecco come si presenta il file dimens.xml Ecco come si presenta il file dimens.xml (sw360dp) Ecco come si presenta il file dimens.xml (sw400dp) Importante sapere che questo concetto di Smallest Screen Width può essere applicato a qualsiasi tipo di file contenuto all'interno della cartella res come a desempio:
  • drawable
  • layout
  • menu
  • colors
  • dimens
  • styles

Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.

Android Studio - Impostare uno sfondo sfumato

In Android Studio è possibile creare uno sfondo sfumato senza dover creare una immagine apposta per questo scopo. Per fare questo occorre seguire questi semplici passaggi: Aprire la cartella res Cliccare con il tasto destro sulla cartella drawable Selezionare New Selezionare Drawable resource file Dare un nome al file ad esempio gradient_background Cliccare sul pulsante OK per confermare Una volta aperto il file gradient_background.xml inserire le seguenti righe di codice: Alla riga 6 inserire l'angolo che definisce la direzione della sfumatura (valori da 0 a 360) Alla riga 7 inserire il colore di partenza in formato esadecimale Alla riga 8 inserire il colore finale in formato esadecimale Per quanto riguarda i colori è possibile utilizzare il sito webgradients.com in modo da poter utilizzare le sfumature proposte o creare le proprie sfumature personalizzate. Una volta creato il file che definisce lo sfondo passare al layout ed impostare l'attibuto backgr