2011-01-16 15 views
6

im confuso da immersione su Android.nozioni di pixel indipendenti dal dispositivo

Capisco dal riferimento che la base per i valori di dp è 160. Quindi, la larghezza di 80dp non deve essere uguale a una vista con una larghezza del 50% dello schermo? Sul mio Nexus One la larghezza in dp è qualcosa di circa 300 dp come sembra.

Cosa mi manca qui?

thx in anticipo

risposta

5

160 punti per pollice . Quindi 80dp sarebbero 1/2 pollici, grosso modo.

+0

OP chiede di dip, non dpi. – Ying

+0

Sono imparentati. Ha menzionato 160 come valore base - quel valore è la densità in DPI. – kcoppock

+0

hai ragione - non ho letto attentamente questa risposta. – Ying

16

"dp" == "pixel indipendenti dalla densità" (Questo è anche il motivo per cui è stato in precedenza chiamato "dip", anche se io preferisco usare "dp" in questi giorni.)

Pensate a come le altre unità - "in" (pollici), "mm" (millimetri), ecc. Consente di fornire una dimensione che viene ridimensionata in base alla densità dello schermo.

Definiamo mdpi la densità di base, quindi "10dp" su uno schermo mdpi avrà esattamente 10 pixel. Su uno schermo hdpi si otterrà 15 pixel, perché hdpi è 1.5 * mdpi.

Si noti che sebbene le costanti per varie densità siano simili a DPI (mdpi è 160, ecc.), La densità è non uguale a DPI. È un fattore di ridimensionamento astratto che si adatta allo schermo dpi, ma non prova a rifletterlo esattamente. (Dovresti usare "in", "mm", ecc. Per le dimensioni esatte, ma il 99,9% non è quello che vuoi, quindi rimani con "dp".) Questo semplifica enormemente la vita di tutti perché non devi occuparti di molti Android dispositivi con una quantità leggermente diversa di spazio per la sua interfaccia utente perché ciascuno di DPI leggermente diverso schermo. Inoltre, i produttori di dispositivi possono selezionare la densità del loro dispositivo per ottenere l'interfaccia utente desiderata, ad esempio Samsung Tab utilizza una densità che è di gran lunga superiore al DPI effettivo, risultando in un'interfaccia utente complessiva più ampia.

+4

"Questo semplifica enormemente la vita di tutti", tranne che non lo fa. Rende la vita più difficile per tutti - perché i tuffi non funzionano (sono così MOLTO diversi su molti pezzi di hardware ora che sono inutili). Google dice ancora di utilizzare dip per tutta l'interfaccia utente, ma ciò è impossibile in quanto fa sì che le alline siano completamente sbagliate sul 30% di tutti i telefoni (sono venuto qui cercando una soluzione, deluso nel trovarne nessuno). – Adam

0

Pixel indipendenti dalla densità (breve: dp) sono un'unità pixel virtuale che verrà determinata al runtime dell'applicazione.

Formala: 1 dp = 1 Pixel su schermo da 160 dpi. Quindi 160 dpi è la densità di base per il sistema.

La conversione di unità dp in pixel dello schermo è piuttosto semplice. pixel del dispositivo effettivi (px) = dp (1) * (dpi (dell'apparecchio)/160 (basale)) Per semplicità: px = dp * (dpi/160)

Esempio: Se un dispositivo a 240 dpi avvia l'app, quindi 1 dp equivale a 1,5 pixel effettivi del dispositivo.

Conclusione: Dp gestisce automaticamente qualsiasi ridimensionamento su dispositivi più grandi o più piccoli. I tempi in cui hai hardcode i pixel sono finiti. DP assicura il corretto ridimensionamento su diverse densità dello schermo.

Problemi correlati