2010-12-16 30 views
11

Tengo un diseño de aplicación final hecho en Photoshop, donde todo se mide en PX. Ahora me doy cuenta de que las aplicaciones de Android están usando DP para tamaños de fuente y otras cosas.Diseño de Photoshop de px a dp

¿Hay alguna manera de convertir PX a DP?

Respuesta

0

Un píxel es PX y el DP o DIP son píxeles independientes del dispositivo. No creo que deba convertir estos. Pero puede usar imágenes escalables de 9 parches utilizando la herramienta draw9patch de las herramientas de Android.

5

De this list de las unidades de dimensiones compatibles con Android, he aquí una descripción de DP:

píxeles independientes de la densidad - una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 ppp, por lo que una dp es un píxel en una pantalla de 160 ppp. La relación de dp-a-píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Nota: El compilador acepta tanto "dip" como "dp", aunque "dp" es más consistente con "sp".

Esto significa que la "conversión" entre píxeles y DP no será uniforme: en algunos dispositivos, la relación podría ser 1DP = 160px, pero en teoría podría ser cualquier cosa. Esto está muy bien cuando se establece el ancho de un botón, por ejemplo, 100dp (ya que se procesará dinámicamente), pero presenta un problema cuando se tienen imágenes que deben tener un tamaño fijo.

Lea esta página en "Supporting Multiple Screens" - Android tiene algo llamado resource directory qualifiers, que le permite crear versiones específicas de tamaño y densidad de sus recursos de imagen. Por ejemplo, para pantallas de baja densidad, puede crear una versión más pequeña de su imagen y colocarla en el directorio drawable-ldpi (o drawable-hdpi para pantallas de alta densidad).


tl; dr No se puede prácticamente "convertir de PX a DP" (ya que la relación no es fijo), pero puede crear varias versiones de sus imágenes y decirle a Android, que para su uso con los recursos clasificadores de directorio.

+0

Entonces ¿Cómo puedo calcular los tamaños de fuente? Sé que en mi diseño (PSD) son 25px. Pero necesito volver a calcular este tamaño para los desarrolladores. El texto no debe ser como imágenes, ya que esta aplicación es multilingüe. – Dammark

+0

@Dammark Para tamaños de fuente, debe usar 'sp' (píxeles independientes de la escala). Esto es básicamente lo mismo que 'dp', pero escalado por la preferencia de tamaño de fuente del usuario (consulte la lista anterior de unidades de dimensión para obtener más información). – Donut

12

En un plano más práctico, que tiene algunas opciones en el aumento de trabajo y fidelty:

  1. han escalado sus recursos para 160 puntos por pulgada, los puso en su directorio res/drawable, y dejar que la escala OS ellos para mirar a la derecha en el dispositivo.

  2. Haga dos copias de sus recursos: uno a 160 puntos por pulgada en su res/drawable y uno a 240 puntos por pulgada en su directorio res/drawable-hdpi. Deje que el sistema operativo escale para el dispositivo exacto a partir de un número bastante cercano.

  3. Decida que no desea escalar y tiene píxeles sin procesar, por lo tanto, coloque sus activos en el directorio res/drawable-nodpi. Esto significa que en 320x480 (pixel) el gráfico puede ser de 2 pulgadas por 3 pulgadas en un teléfono, pero solo 1 1/3 pulgadas por 2 pulgadas en otra pantalla.

  4. Especifique la estrategia de escala exacta para su trabajo, utilizando la herramienta draw9patch. Esto puede ser muy útil para evitar que las esquinas de las cajas se salgan de los "jaggies" y para que los gráficos a pantalla completa soporten diferentes relaciones de aspecto.

  5. Cree gráficos separados para cada dispositivo que le interese y vuelva a utilizar gráficos escalables para el resto. Tendrás que superar a los fanáticos que agitan guías de estilo para convencerte de que no lo hagas de esta manera.

Ah, y como gotcha, especifique sp para sus fuentes, en lugar de dp o pt. Una fuente de 10 puntos sería una fuente de 22 sp [= 10 * (160/72) o = número de puntos por 2.222]. Las unidades sp se escalan con las preferencias del usuario para fuentes pequeñas, medianas o grandes.

+0

Un gran consejo, gracias. –

0

Tengo el mismo problema pero ahora tengo la solución.

¿Por qué no utiliza el convertidor en línea para ver qué dp o px tiene para obtener una resolución diferente de dispositivo Android?

Ver este enlace: this link que me ayuda mucho y también te ayuda.

Disfrute de la codificación.