He creado mi aplicación con la altura y la anchura dadas en píxeles para un dispositivo Pantech cuya resolución es de 480x800.
Necesito convertir la altura y la anchura para un dispositivo G1. Pensé que convertirlo en dp resolverá el problema y proporcionará la misma solución para ambos dispositivos.
¿Existe alguna forma fácil de convertir los píxeles a dp? ¿Alguna sugerencia?
// Converts 14 dip into its equivalent px
float dip = 14f;
Resources r = getResources();
float px = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip,
r.getDisplayMetrics()
);
Deberías utilizar los dp igual que los píxeles. Eso es todo lo que son; píxeles independientes de la pantalla. Usa los mismos números que usarías en una pantalla de densidad media, y el tamaño será mágicamente correcto en una pantalla de alta densidad.
Sin embargo, parece que lo que usted necesita es la opción fill_parent en su diseño. Usa fill_parent cuando quieras que tu vista o control se expanda a todo el tamaño restante en el contenedor padre.
PX
y DP
son diferentes pero similares.
La resolución DP
es la resolución cuando sólo se tiene en cuenta el tamaño físico de la pantalla. Cuando se utiliza DP
se escalará el diseño a otras pantallas de tamaño similar con diferentes densidades de píxeles
.
Sin embargo, de vez en cuando quieres "píxeles", y cuando tratas con dimensiones en el código siempre estás tratando con "píxeles" reales, a menos que los conviertas.
Así que en un dispositivo Android, de tamaño normal de pantalla hdpi
, 800x480
es 533x320en
DP(creo). Para convertir
DPen
pixels /1.5, para volver a convertir
*1.5. Esto es sólo para un tamaño de pantalla y
dpi`, cambiaría dependiendo del diseño. Sin embargo, nuestros artistas me dan "píxeles" y yo los convierto en "DP" con la ecuación anterior de "1,5".