2010-12-10 17 views
6

Estoy teniendo un problema real con mis herramientas que no puedo entender.Android múltiples tamaños de pantalla y problemas de densidad

El problema es el siguiente:

Hay tamaños de pantalla a aproximadamente 320x480, 480x800, 480x854

Entonces hay más comúnmente densidades a 1,0 (160) y 1.5 (240)

Ahora, en un Droid, el tamaño de la pantalla es 480x800 y la densidad está informando usando DisplayMetrics como 1,5

en la G1, es 320x480 y de informar a una densidad de 1,0

PERO tableta dispositivos están informando de vuelta en 480x800 con una densidad de 1,0 (160)

Por lo tanto, me estoy volviendo loco porque puedo poner 320x480 imágenes de la carpeta dibujables-MDPI y 480x800 imágenes de la carpeta dibujables-IPAP , pero en las computadoras Tablet, no importa lo que no cambie el tamaño de una pantalla completa.

Cualquier ayuda sería muy apreciada. Solo quiero que todas mis imágenes 320x480 se escalen independientemente del dispositivo.

+0

No estoy preocupado por la distorsión debido a la naturaleza de las imágenes, mi problema es que no siempre escala. En un G1, no escalan en absoluto y esto está bien. En un Droid, se amplían porque la densidad se informa correctamente (240), pero en un Galaxy Tab, las imágenes son todas pequeñas y en la esquina superior izquierda de la pantalla porque informa 480px de ancho, pero la densidad sigue siendo 160 - o al menos informando de esta manera. –

Respuesta

0

Para escalar imágenes sin distorsión o pixelización, Android usa imágenes llamadas 9-patch. Leer más acerca de ellos aquí:

http://developer.android.com/guide/developing/tools/draw9patch.html

Pero esto es más o menos útiles dependiendo de cómo se decide utilizar las imágenes. La herramienta de parche 9 no sería útil, por ejemplo, para una aplicación de fondo de pantalla, por ejemplo.

Aquí hay otro enlace que he encontrado en SO:

http://www.developer.com/ws/other/article.php/3889086

1

¿Cómo estás aplicando las imágenes? Puedes simplemente usar fill_parent para el layout_width/height de un ImageView, y seleccionar fitCenter para scaleType.

Es perfectamente correcto para el Galaxy Tab que se informa como medio de dpi (aunque me pareció que la resolución de la ficha era de 1024 x 600?), A pesar de que es una alta resolución. El dpi es una medida del tamaño de los píxeles (por ejemplo, el número de píxeles en una pulgada). Por lo tanto, una resolución de 480 x 800 en una pantalla de 4 "tendrá una resolución mayor de dpi que de 480 x 800 en una pantalla de 7", simplemente porque están comprimidas en un espacio más pequeño.

En realidad, puede agregar una carpeta extra dibujable llamada drawable-large-mdpi que podría contener archivos para un dispositivo apantallado de ppp de pantalla grande, como la Pestaña (consulte here para obtener más información sobre esos calificadores).

+0

Sí, pero el problema es que no todos los dispositivos parecen comportarse de la misma manera. Si tengo una png de 320x480 en la carpeta dibujable, en una pantalla G1 con 160 ppp la imagen se ajusta a la pantalla completa, en un droide con una pantalla de 480x800 con 240 ppp, la imagen se ajusta a la pantalla completa. Pero entonces, de repente, hay dispositivos con 480x800 pantallas y 160 ppp. Entonces, si tengo más de 100 imágenes, mi programa será ENORME si tengo que crear imágenes para cada resolución. ¿Por qué no están escalando para todos los dispositivos como lo hacen en el Droid? –

+0

Una vez más, ¿cómo dibujas las imágenes? ImageView? ¿Fondo? – kcoppock

+0

Estoy usando drawBitmap() en onDraw() en mis juegos. –

2

Es posible que faltan algunas etiquetas en su manifiesto como anyDensity y supports.... El soporte de tableta decente solo vino con xlarge (en Gingerbread, creo).

Además, si está dibujando usted mismo, debe llamar al setTargetDensity(actualDensity) en su lienzo, dibujable o mapa de bits (no recuerdo cuál de los tres).

1

La tableta está haciendo algo mal.Google hizo posible específicamente que el fabricante del hardware declarara hardware mpdi incluso si el dpi es aproximadamente 160. El Galaxy Tab hace esto: http://realmike.org/blog/2010/12/21/multiple-screen-sizes-with-processing-for-android/

Puede intentar agregar un archivo de resolución/drawable-mdpi-xlarge y agregar gráficos hdpi aquí . xlarge se introdujo en 2.3, creo, y las versiones anteriores de Android no reconocerán esto. Es posible que desee probar drawable-mdpi-large luego (según http://blog.alsutton.com/2010/07/03/android-tablets-and-mdpi-large/)

Agregando carpetas extra dibuja se agrega al tamaño de su apk. En general, las tabletas anteriores a Gingerbread o mejores Honeycomb son complicadas para Android y no me molestaría en hacer cosas especiales para ellas si puedes evitarlo.

+0

debe ser 'res/drawable-xlarge-mdpi' y no' res/drawable-mdpi-xlarge' – WarrenFaith

Cuestiones relacionadas