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
mm millimetri 25,4
pt Punti 72
dp Density Independent Pixels ~ 160 No
sp Scala pixel indipendenti ~ 160 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:

  1. 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).
  2. <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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow