Ho creato la mia applicazione con l'altezza e la larghezza date in pixel per un dispositivo Pantech la cui risoluzione è 480x800.
Ho bisogno di convertire altezza e larghezza per un dispositivo G1. Ho pensato che la conversione in dp risolverà il problema e fornirà la stessa soluzione per entrambi i dispositivi.
**C'è un modo semplice per convertire i pixel in dp?
// Converts 14 dip into its equivalent px
float dip = 14f;
Resources r = getResources();
float px = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
r.getDisplayMetrics()
);
Dovresti usare i dp proprio come faresti con i pixel. Questo è tutto ciò che sono; pixel indipendenti dal display. Usa gli stessi numeri che useresti su uno schermo a media densità, e la dimensione sarà magicamente corretta su uno schermo ad alta densità.
Tuttavia, sembra che ciò di cui hai bisogno sia l'opzione fill_parent nel tuo progetto di layout. Usa fill_parent quando vuoi che la tua vista o il tuo controllo si espanda a tutte le dimensioni rimanenti nel contenitore padre.
PX
e DP
sono diversi ma simili.
La DP
è la risoluzione quando fattorizzi solo la dimensione fisica dello schermo. Quando usi DP
scalerà il tuo layout per altri schermi di dimensioni simili con diverse densità di pixel
.
Occasionalmente però vuoi davvero i pixel
, e quando hai a che fare con le dimensioni nel codice hai sempre a che fare con i veri pixel
, a meno che tu non li converta.
Quindi su un dispositivo Android, con uno schermo di dimensioni normali hdpi
, 800x480 è 533x320
in DP
(credo). Per convertire DP
in pixel /1.5
, per riconvertire *1.5
. Questo è solo per una dimensione di schermo e dpi
, cambierebbe a seconda del design. I nostri artisti mi danno pixel
però e io converto in DP
con l'equazione di cui sopra 1.5
.