2010-12-01 19 views
12

Todos los documentos de Android mencionan el directorio "dibujable". Sin embargo, cuando creo un proyecto de Android en Eclipse, no crea un directorio "/ res/dibujable", pero crea "/ res/drawable-ldpi" y "/ res/drawable-mdpi". Me imagino que esos tienen algo que ver con la resolución de píxeles, pero ¿qué está pasando exactamente aquí? Cuando revisé los tutoriales, creé manualmente un directorio "dibujable" y puse mis recursos allí, pero ¿era necesario? ¿Las referencias al trabajo "/ res/drawable /" funcionan si solo están presentes "drawable- {l | m} dpi"?drawable vs. drawable-ldpi/drawable-mdpi

Respuesta

2

Supongo que tiene algo que ver con la forma en que generó el proyecto de Android. Normalmente, mía crea una carpeta hdpi, mdpi y ldpi. Básicamente, "dibujable" es el valor predeterminado. Si tiene todos sus recursos en la carpeta hdpi e intenta ejecutarlos en un dispositivo ldpi, creo que obtendrá una excepción de algún tipo (no lo he probado, pero creo que este es el caso). Se explica una explicación detallada de lo que ocurre sin recursos predeterminados here.

Debe mantener una colección predeterminada de recursos en la carpeta principal "dibujable" (que sí, puede que tenga que crear manualmente) solo para estar seguros, y para asegurar la compatibilidad con las versiones anteriores de Android. Android comprobará primero las carpetas de densidad específica, pero se retrotraerá a la carpeta dibujable predeterminada si no puede encontrar ese recurso específico en esa densidad.

+2

Android escalará los recursos de la carpeta hdpi en un dispositivo ldpi si una aplicación tiene solo esta carpeta dibujable. – Michael

+0

@Pixie: ¡Así parece! Debería haber hecho más investigación sobre esto primero. Este enlace: http://developer.android.com/guide/topics/resources/providing-resources.html#Compatibility detalla exactamente cómo funciona. Aún así, probablemente pondría algunos objetos arrastrables predeterminados en la carpeta principal para estar seguros, pero es bueno saber esto, ¡gracias! – kcoppock

+0

@Michael, esto es incorrecto, vea http://stackoverflow.com/questions/24067728/does-android-override-resources-files-in-ascending-or-descending-order –

0

Calificadores Hdpi, mdpi y ldpi se agregaron en Android 1.6. Si va a ser compatible con Android 1.5, debe colocar todos los drawwables de medio dpi en el directorio dibujable predeterminado.

Puede leerlo here.

1

El lastest de crear un montón de carpetas dibujable para que cuando se crea una nueva aplicación para diferentes densidades de pantalla, aunque curiosamente la carpeta por defecto 'estirable' se menciona en los documentos nunca ha sido creado para mí por el SDK defecto.

Si duplica y cambia el tamaño de sus recursos gráficos para las seis carpetas de densidad creadas actualmente de forma predeterminada, desde drawable-ldpi a drawable-xxxhdpi, el tamaño de su aplicación será abultado para una aplicación de gráficos pesados, sin mencionar otros problemas que surgen como bloqueos de tamaño de montón (deben proporcionar diferentes carpetas para diferentes tamaños de montón de dispositivos).

Actualmente puse todos mis gráficos en la carpeta drawable-hdpi, excepto las copias del icono del iniciador para resoluciones más altas en las carpetas xhdpi, xxhdpi y xxxhdpi. No pongo nada en las carpetas mdpi y ldpi, y de hecho he eliminado esas carpetas para mantener la aplicación limpia. También podría haber cambiado el nombre del drawable-hdpi por simplemente drawable, pero he conservado el nombre predeterminado ya que actúa como la carpeta predeterminada en este caso de todos modos.

1

In this answer, @RomainGuy mencionó que debe mantener las imágenes apropiadas en sus respectivas carpetas (mdpi, xhdpi) y otras fuentes como archivos .xml para dibujar en su carpeta drawable.

Por ejemplo,
si va a utilizar un dispositivo hdpi, aunque no haya puesto ninguna imagen en la carpeta hdpi, no se bloqueará; en su lugar cambiará el tamaño de la imagen de su siguiente carpeta de mejor ajuste (es decir, mdpi) y expandirá la imagen.

Cuestiones relacionadas