Ver Mensaje Individual
  #2009  
Viejo 17/04/12, 17:30:37
Array

[xs_avatar]
lirik lirik no está en línea
Cocinero veterano
 
Fecha de registro: ene 2011
Localización: Valladolid
Mensajes: 3,463
Modelo de smartphone: I9000, Nexus 5
Tu operador: Yoigo
 Cita: Originalmente Escrito por ruben.matencio Ver Mensaje
Una duda de novato... Que es el multidpi?

Gracias.
dpi= Dots Per Inch = Puntos por pulgada en castellano.

Imagina que la pantalla del móvil es una rejilla de 800x480 (alto x ancho) de cuadraditos (pixeles), es decir 800 pixeles de alto por 480 pixeles de ancho físicos (en el galaxys es 800x480) y una pulgada son 2.54cm.

¿Que significa densidad de pantalla o densidad de dpi o puntos por pulgada o lo que es lo mismo "dpi"?

La cantidad de puntos que hay por cada 2.54cm, a cada resolución le corresponderán una cantidad de dpi fija que se puede modificar por software, evidentemente no podemos modificar un pixel al ser un objeto físico, muy pequeño pero fisico (si, sarkozy también puede considerarse algo físico), pero sí los dpi que será lo que se muestre en la pantalla (imágenes texto..), eso se traduce en que si modificamos los dpi por software y hay más puntos por pulgada (recordar; sin variar la pantalla, sus medidas) los puntos tienen que ser más pequeños para entrar en el mismo espacio lo que se traduce en que si un icono de una app estaba representado en una región de 80x80 dpi ahora esa imagen (que no ha variado sus medidas) será más pequeña al aumentar los dpi que tiene la pantalla, es decir entrarán más cosas en la pantalla.

¿Cual es el problema?

Que si variamos los dpi de la pantalla pues todo se hará más pequeño y su diseño se verá afectado.

¿Y en que se traduce todo esto?

dpi es una medida que se usa en el código para definir el ancho y alto de las cosas, supongamos que el statusbar la imagen donde vemos el reloj en nuestro galaxyS mide 480x38 píxeles (o algo así), el pixel es una medida invariable, la pantalla siempre tendrá 800x480 pixeles (fisicos) por lo que si la imagen la definimos en el código en pixeles dará igual cuanta densidad (dpi) tengamos, siempre ocupará lo mismo 480x38 (medidas en pantalla) en cambio la medida dpi se adapta a distintas resoluciones de pantalla.

Entonces, ¿para que se usa la medida dpi si poniéndolo en pixeles dará igual que resolución tengamos que siempre se verá igual y bien?

Pues sencillamente para que el mismo código sirva para diferentes pantallas con diferentes resoluciones y como consecuencia diferentes dpi, al estar las medidas del código en dpi nuestra aplicación servirá tanto para el galaxyS como para el nexus one que creo que son 3.7" la aplicación se adaptará, en cambio si estuviese en pixeles las medidas al ser la pantalla mas pequeña la del nexus pues en el ejemplo que he puesto de la imagen del statusbar que ocupaba 480pixeles de ancho (todo el ancho del galaxys) no entrará en el nexus one y si fuera el galaxy Note pues quedaría pequeña.

Y después de todo este tochazo de explicación... ¿me explicas que es multidpi? -Gracias

Sencillamente hacer que el código esté en pixeles para que aun cambiando la densidad de pantalla se vea bien y el diseño no se vea afectado y que a la vez entren más cosas en pantalla, por ejemplo la lista que sale en ajustes, al aumentar los dpi hacemos que entren más apartados de la lista en la misma pantalla reduciendo el texto e imágenes manteniendo un diseño optimo sin que se descentre nada.

-----------------------------------------------------------------------------------------------------

Y por curiosidad ¿como calculamos la densidad de una pantalla sabiendo las pulgadas y resolución que pone en las características?

Como no se las medidas de la pantalla pero si sé que son 4" (son 4" de diagonal) y también sé que la resolución es 800x480 píxeles puedo calcular las medidas de la pantalla.

Una pulgada son 2.54cm -> 4" = 10.16cm

Teniendo la diagonal de la pantalla quiero calcular dos de los lados, vemos que sale un triángulo rectangulo, por pitagoras (el cuadrado de la diagonal es la suma de los dos catetos ) h^2=x^2+y^2 -> (llamo "x" al ancho e "y" al alto, h sería la diagonal), necesitamos despejar una variable para poder resolver el sistema, eso lo hacemos viendo la relación de "x" e "y" si "x" son 800 e "y" son 480 y=800/480x es deciry=5/3x con lo cual nos queda:

10.16^2= x^2+(5/3x)^2, resolvemos y nos queda que x=5.23cm, y=5/3x=8.712cm

Tenemos que la diagonal son 10.16cm el alto 8.712cm y el ancho 5.23cm y sabemos que la resolución es 800 pixeles de alto por 480 pixeles de ancho, calculamos cuanto mide cada pixel dividiendo los cm de ancho entre los pixeles de ancho (o cm de alto entre pixeles de alto, daría lo mismo) 5.23/480=0.01089583333cm cada pixel pues bien, si queremos saber que densidad tiene nuestra pantalla por pulgada (dpi) solo tenemos que dividir una pulgada entre lo que mide cada pixel.

Lo podemos hacer pasando una pulgada a cm y dividiendo por el tamaño del pixel en cm

2.54cm/0.01089583333cm = 233 dpi

O pasamos los pixeles a pulgadas 0.01089583333/2.54=0.00428969815 pulgadas cada pixel

1 pulgada / 0.00428969815 pulgadas = 233 dpi


PD: Si, me aburría y me he liado sin querer...

Última edición por lirik Día 17/04/12 a las 21:47:27.
Los siguientes 10 usuarios han agradecido a lirik su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]