Android
Schermi di supporto con diverse risoluzioni, dimensioni
Ricerca…
Osservazioni
Termini e concetti
Dimensione dello schermo
Dimensione fisica effettiva, misurata come diagonale dello schermo. Per semplicità, Android raggruppa tutte le dimensioni effettive dello schermo in quattro dimensioni generalizzate: piccola, normale, grande e molto grande.
Densità dello schermo
La quantità di pixel all'interno di un'area fisica dello schermo; di solito indicato come dpi (punti per pollice). Ad esempio, uno schermo con densità "bassa" ha meno pixel all'interno di una determinata area fisica, rispetto a uno schermo con densità "normale" o "alta". Per semplicità, Android raggruppa tutte le densità dello schermo effettive in sei densità generalizzate: bassa, media, alta, extra-alta, extra-extra-alta e extra-extra-extra-alta.
Orientamento
L'orientamento dello schermo dal punto di vista dell'utente. Questo è orizzontale o verticale, il che significa che le proporzioni dello schermo sono rispettivamente ampie o alte. Si noti che non solo i dispositivi diversi operano in diversi orientamenti per impostazione predefinita, ma l'orientamento può cambiare in fase di esecuzione quando l'utente ruota il dispositivo. Risoluzione Il numero totale di pixel fisici su uno schermo. Quando si aggiunge il supporto per più schermi, le applicazioni non funzionano direttamente con la risoluzione; le applicazioni dovrebbero riguardare solo le dimensioni e la densità dello schermo, come specificato dai gruppi di dimensioni e densità generalizzate. Pixel indipendente dalla densità (dp) Un'unità di pixel virtuale che dovresti usare quando definisci il layout dell'interfaccia utente, per esprimere le dimensioni del layout o la posizione in un modo indipendente dalla densità. Il pixel indipendente dalla densità è equivalente a un pixel fisico su uno schermo a 160 dpi, che è la densità di base assunta dal sistema per uno schermo a densità "media". In fase di esecuzione, il sistema gestisce in modo trasparente qualsiasi ridimensionamento delle unità dp, in base alle necessità, in base alla densità effettiva dello schermo in uso. La conversione delle unità dp in pixel dello schermo è semplice: px = dp * (dpi / 160). Ad esempio, su uno schermo a 240 dpi, 1 dp equivale a 1,5 pixel fisici. Dovresti sempre utilizzare le unità dp quando definisci l'interfaccia utente della tua applicazione, per garantire la corretta visualizzazione dell'interfaccia utente su schermi con densità diverse.
unità
px
Pixel: corrisponde ai pixel effettivi sullo schermo.
nel
Pollici - in base alle dimensioni fisiche dello schermo. 1 pollice = 2,54 centimetri
mm
Millimetri - in base alle dimensioni fisiche dello schermo.
pt
Punti: 1/72 di pollice in base alle dimensioni fisiche dello schermo.
dp o dip
Pixel indipendenti dalla densità: un'unità astratta basata sulla densità fisica dello schermo. Queste unità sono relative a uno schermo da 160 dpi, quindi un dp è un pixel su uno schermo da 160 dpi. Il rapporto tra dp-to-pixel cambierà con la densità dello schermo, ma non necessariamente in proporzione diretta. Nota: il compilatore accetta sia "dip" che "dp", sebbene "dp" sia più coerente con "sp".
sp
Pixel indipendente dalla scala: è come l'unità dp, ma è anche ridimensionato dalla preferenza della dimensione del carattere dell'utente. Si consiglia di utilizzare questa unità quando si specificano le dimensioni dei caratteri, in modo che vengano regolate sia per la densità dello schermo che per le preferenze dell'utente. Dalla comprensione dell'indipendenza dalla densità in Android:
Unità | Descrizione | Unità per pollice fisico | Densità indipendente | Stessa dimensione fisica su ogni schermo |
---|---|---|---|---|
px | pixel | Varia | No | No |
nel | Pollici | 1 | sì | sì |
mm | millimetri | 25,4 | sì | sì |
pt | Punti | 72 | sì | sì |
dp | Density Independent Pixels | ~ 160 | sì | No |
sp | Scala pixel indipendenti | ~ 160 | sì | No |
Riferimenti:
Utilizzo dei qualificatori di configurazione
Android supporta diversi qualificatori di configurazione che consentono di controllare il modo in cui il sistema seleziona le risorse alternative in base alle caratteristiche della schermata corrente del dispositivo. Un qualificatore di configurazione è una stringa che è possibile aggiungere a una directory di risorse nel progetto Android e specifica la configurazione per la quale sono progettate le risorse interne.
Per utilizzare un qualificatore di configurazione:
- Crea una nuova directory nella directory res / del tuo progetto e nominala usando il formato:
<resources_name>-<qualifier>
.<resources_name>
è il nome della risorsa standard (come drawable o layout). -
<qualifier>
è un qualificatore di configurazione, che specifica la configurazione dello schermo per cui queste risorse devono essere utilizzate (come hdpi o xlarge).
Ad esempio, le seguenti directory delle risorse dell'applicazione forniscono diversi progetti di layout per diverse dimensioni dello schermo e diversi drawable. Usa la mipmap/
cartelle per le icone di avvio.
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra-large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation
res/drawable-mdpi/graphic.png // bitmap for medium-density
res/drawable-hdpi/graphic.png // bitmap for high-density
res/drawable-xhdpi/graphic.png // bitmap for extra-high-density
res/drawable-xxhdpi/graphic.png // bitmap for extra-extra-high-density
res/mipmap-mdpi/my_icon.png // launcher icon for medium-density
res/mipmap-hdpi/my_icon.png // launcher icon for high-density
res/mipmap-xhdpi/my_icon.png // launcher icon for extra-high-density
res/mipmap-xxhdpi/my_icon.png // launcher icon for extra-extra-high-density
res/mipmap-xxxhdpi/my_icon.png // launcher icon for extra-extra-extra-high-density
Conversione di dp e sp in pixel
Quando devi impostare un valore in pixel per qualcosa come Paint.setTextSize
ma desideri comunque che venga ridimensionato in base al dispositivo, puoi convertire i valori dp e sp.
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, metrics);
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12f, metrics);
In alternativa, puoi convertire una risorsa di dimensione in pixel se hai un contesto da cui caricare la risorsa.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="size_in_sp">12sp</dimen>
<dimen name="size_in_dp">12dp</dimen>
</resources>
// Get the exact dimension specified by the resource
float pixels = context.getResources().getDimension(R.dimen.size_in_sp);
float pixels = context.getResources().getDimension(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as a size.
// The value is rounded down to the nearest integer but is at least 1px.
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as an offset.
// The value is rounded down to the nearest integer and can be 0px.
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_dp);
Dimensioni del testo e diverse dimensioni dello schermo Android
A volte, è meglio avere solo tre opzioni
style="@android:style/TextAppearance.Small"
style="@android:style/TextAppearance.Medium"
style="@android:style/TextAppearance.Large"
Usa piccoli e grandi per differenziarti dalle normali dimensioni dello schermo.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Small"/>
Per normale, non devi specificare nulla.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Usando questo, puoi evitare di testare e specificare le dimensioni per le diverse dimensioni dello schermo.