2011-07-11 13 views
21

Duplicar posible:
converting pixels to dp in androidAndroid Convertir Px a Dp (Video Aspect Ratio)

estoy tratando de convertir píxeles a dp. ¿Cuál es la fórmula?

Permite convertir 640 y 480 en dp. Los documentos dicen que esto

La conversión de unidades dp de píxeles de la pantalla es simple: px = dp * (ppp/160)

Pero no creo que esto es lo que necesito (y yo no sé cómo usar esto). Supongo que solo necesito el forumla. Tengo el código listo:

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    switch(metrics.densityDpi) 
    { 
     case DisplayMetrics.DENSITY_LOW: 
     int sixForty = ? 
     int fourEighty = ? 
     break; 

     case DisplayMetrics.DENSITY_MEDIUM: 
     int sixForty = ? 
     int fourEighty = ? 
     break; 

     case DisplayMetrics.DENSITY_HIGH: 
     int sixForty = ? 
     int fourEighty = ? 
     break; 
    } 
+1

Si usted está buscando para hacer una conversión de una sola vez (por ejemplo, para la exportación de los sprites de Photoshop), [esto es un convertidor ingeniosa] (https://pixplicity.com/dp-px-converter/) . –

Respuesta

68

En lugar de tratar de deducir el factor de conversión dp de la clasificación de la densidad de la pantalla, sólo tiene que consultar directamente:

getWindowManager().getDefaultDisplay().getMetrics(metrics); 
float logicalDensity = metrics.density; 

logicalDensity contendrá entonces el factor que necesita para multiplicar dp por para obtener dimensiones de píxeles físicos para la pantalla del dispositivo.

int px = (int) Math.ceil(dp * logicalDensity); 
+0

necesito el valor dp de PIXELS. Tengo un video de 640 píxeles por 480 píxeles y necesito obtener sus equivalentes dp según la densidad de la pantalla (sé cómo obtener píxeles de dp, pero no al revés) – spentak

+8

Para obtener dp de los píxeles, divida la densidad en el valor de píxel en lugar de multiplicarlo – mportuesisf

+1

gracias! eso fue bastante fácil – spentak

Cuestiones relacionadas