Domanda Qual è la differenza tra "px", "dip", "dp" e "sp"?


Qual è la differenza tra le unità di misura Android?

  • px
  • tuffo
  • dp
  • sp

5150
2018-01-08 03:23


origine


risposte:


Dal Documentazione per sviluppatori Android :

  1. px
    pixel  - corrisponde ai pixel effettivi sullo schermo.

  2. in
    Pollici  - in base alle dimensioni fisiche dello schermo.
      1 pollice = 2,54 centimetri

  3. mm
    millimetri  - in base alle dimensioni fisiche dello schermo.

  4. pt
    Punti  - 1/72 di pollice in base alle dimensioni fisiche dello schermo.

  5. dp  o tuffo
    Densità - Pixel indipendenti: un'unità astratta basata sulla densità fisica dello schermo. Queste unità sono relative a un 160       schermo dpi, quindi un dp è un pixel su uno schermo a 160 dpi. Il rapporto di       dp-to-pixel cambierà con la densità dello schermo, ma non necessariamente       in proporzione diretta. Nota: il compilatore accetta sia "dip" che       "dp", anche se "dp" è più coerente con "sp".

  6. sp
    Scala -indipendenti pixel - questo è come l'unità dp, ma è anche ridimensionato dalla preferenza della dimensione del carattere dell'utente. Ti è raccomandato       utilizzare questa unità quando si specificano le dimensioni dei caratteri, quindi verranno regolati       sia per la densità dello schermo che per le preferenze dell'utente.

A partire dal Comprensione dell'indipendenza dalla densità in Android :

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Maggiori informazioni possono essere trovate anche nel Google Design Documentation .

Per calcolare le dimensioni sul dispositivo reale Questo  l'app può essere utilizzata.


5185
2018-02-25 12:56



Praticamente tutto ciò che riguarda questo e come ottenere il miglior supporto per più schermi con diverse dimensioni e densità è ben documentato qui:

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: piccolo, normale, grande e extra-large.

Densità dello schermo
    La quantità di pixel all'interno di un'area fisica del   schermo; di solito indicato come dpi (punti per pollice). Ad esempio, a   lo schermo a "bassa" densità ha meno pixel all'interno di una determinata area fisica,   confrontato con uno schermo con densità "normale" o "alta". Per semplicità,   Android raggruppa tutte le densità dello schermo effettive in sei generalizzate   densità: bassa, media, alta, extra-alta, extra-extra-alta e   extra-extra-extra-alto.

Orientamento
L'orientamento dello schermo dal punto di vista dell'utente   vista. Questo è orizzontale o verticale, il che significa che lo schermo è   le proporzioni sono rispettivamente ampie o alte. Sii consapevole che no   solo i dispositivi diversi operano in diversi orientamenti da   predefinito, ma l'orientamento può cambiare in fase di esecuzione quando l'utente   ruota il dispositivo.

Risoluzione
 Il numero totale di pixel fisici attivi   uno schermo. Quando si aggiunge il supporto per più schermi, le applicazioni lo fanno   non lavorare direttamente con la risoluzione; le domande dovrebbero essere preoccupate   solo con dimensioni e densità dello schermo, come specificato dal generalizzato   gruppi di dimensioni e densità.

Pixel indipendente dalla densità (dp)
 Un virtuale   unità pixel che dovresti usare quando definisci il layout dell'interfaccia utente, per esprimere   dimensioni del layout o posizione in modo indipendente dalla densità.   Il pixel indipendente dalla densità è equivalente a un pixel fisico su un 160   schermo dpi, che è la densità di base assunta dal sistema per a   schermo a "media" densità. Durante il runtime, il sistema gestisce in modo trasparente   qualsiasi ridimensionamento delle unità dp, se necessario, 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   è uguale a 1,5 pixel fisici. Dovresti sempre usare le unità dp quando   definizione dell'interfaccia utente della tua applicazione, per garantire la corretta visualizzazione dell'interfaccia utente   schermi con densità diverse.

Se sei seriamente intenzionato a sviluppare un'app Android per più di un tipo di dispositivo, dovresti leggere almeno una volta le schermate di supporto del documento di sviluppo. In aggiunta a ciò è sempre una buona cosa sapere il numero effettivo di dispositivi attivi che hanno una particolare configurazione dello schermo.


606
2017-08-02 14:15



Elaborerò ulteriori informazioni su come esattamente convertire dp in px:

  • Se si esegue su un dispositivo mdpi, a 150 x 150 px l'immagine prenderà 150 * 150 dp dello spazio sullo schermo.
  • Se si esegue su un dispositivo hdpi, a 150 x 150 px l'immagine prenderà 100 * 100 dp dello spazio sullo schermo.
  • Se si esegue su un dispositivo xhdpi, a 150x150 px l'immagine prenderà 75 * 75 dp dello spazio sullo schermo.

Al contrario: per esempio, vuoi aggiungere un'immagine alla tua applicazione e ne hai bisogno per riempire un 100 * 100 dp controllo. Dovrai creare immagini di dimensioni diverse per le dimensioni dello schermo supportate:

  • 100 * 100 px immagine per mdpi
  • 150 * 150 px immagine per hdpi
  • 200 * 200 px immagine per xhdpi

280
2017-10-30 09:43



px pixel  - Il punto per scala corrisponde ai pixel effettivi sullo schermo.

in Pollici  - in base alle dimensioni fisiche dello schermo.

mm millimetri  - in base alle dimensioni fisiche dello schermo.

pt Punti  - 1/72 di pollice in base alle dimensioni fisiche dello schermo.

dp Densità  - Pixel indipendenti: un'unità astratta basata sulla densità fisica dello schermo. Queste unità sono relative a uno schermo da 160 dpi, quindi uno 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 entrambi dip e dp, anche se dp è più coerente con sp.

sp - Pixel indipendenti dalla scala  - questo è come il dp unità,  ma è anche ridimensionato dalla preferenza della dimensione del carattere dell'utente. Si consiglia di utilizzare questa unità quando si specificano le dimensioni dei caratteri,  quindi saranno regolati sia per la densità dello schermo che per le preferenze dell'utente.

Prendiamo l'esempio di due schermi che hanno le stesse dimensioni ma uno ha una densità dello schermo di 160 dpi (punti per pollice, ovvero pixel per pollice) e l'altro è di 240 dpi.

                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same

232
2017-07-26 21:19



Inoltre dovresti avere una chiara comprensione dei seguenti 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 ed extra large.

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, a   lo schermo a "bassa" densità ha meno pixel all'interno di una determinata area fisica,   confrontato con uno schermo con densità "normale" o "alta". Per semplicità,   Android raggruppa tutte le densità dello schermo effettive in quattro generalizzate   densità: bassa, media, alta e altissima.

Orientamento:  

L'orientamento dello schermo dal punto di vista dell'utente. Questo è o paesaggio o ritratto, il che significa che il   le proporzioni dello schermo sono rispettivamente ampie o alte. Sii consapevole   che non solo i diversi dispositivi 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 risoluzione; le applicazioni dovrebbero riguardare solo lo schermo   dimensione e densità, come specificato dalle dimensioni e dalla densità generalizzate   gruppi.

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   posizione in un modo indipendente dalla densità. Il pixel indipendente dalla densità   è equivalente a un pixel fisico su uno schermo a 160 dpi, che è il   densità di base assunta dal sistema per uno schermo con densità "media".   In fase di esecuzione, il sistema gestisce in modo trasparente qualsiasi ridimensionamento del dp   unità, se necessario, 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 fisico   pixel. Dovresti sempre usare le unità dp quando definisci il tuo   interfaccia utente dell'applicazione, per garantire la corretta visualizzazione dell'interfaccia utente con gli schermi   diverse densità.

Riferimento: Sito per sviluppatori Android


183
2017-10-17 12:47



dp è dip. Usalo per tutto (margine, riempimento, ecc.).

Uso sp solo per {text-size}.


Per ottenere le stesse dimensioni su diverse densità dello schermo, Android converte queste unità in pixel in fase di runtime, quindi non c'è nessuna matematica complicata da fare.


Guarda la differenza tra px, dp e sp su diverse dimensioni dello schermo.

Enter image description here

Fonte: Programmazione Android: The Big Nerd Ranch Guide


167
2018-01-10 19:13



Ho calcolato la formula seguente per effettuare le conversioni dpi a dp e sp enter image description here


118
2017-12-27 09:21



definizioni

px  o il punto è a pixel  sullo schermo fisico.

dPI  sono pixel per pollice sullo schermo fisico e rappresentano la densità del display.

Android dà nomi alias a diverse densità

  • ldpi (basso) ~ 120 dpi
  • mdpi (medio) ~ 160 dpi
  • hdpi (alto) ~ 240 dpi
    • la maggior parte dei dispositivi nel 2015 sono qui
  • xhdpi (extra-alto) ~ 320 dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-alto) ~ 480 dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-alto) ~ 640 dpi

tuffo  o dp  siamo pixel indipendenti dalla densità , cioè corrispondono a più o meno pixel a seconda della densità fisica.

  • 1dp = 1px su mdpi

enter image description here

sp  o sorso  è un pixel indipendente dalla scala . Sono ridimensionati quando il Testo grande  l'opzione è attivata impostazioni  > Accessibilità

  • 1sp = 1dp
  • 1sp = 1.2dp con Accessibility Large Text

Cosa usare?

Uso sp  per dimensioni del testo.

Uso dp  per tutto il resto.


106
2017-09-20 21:34