298 votos

¿Puede el directorio estirable Android contener subdirectorios?

En la documentación del SDK de Android, todos los ejemplos que se utilizan con el @dibujable/my_image sintaxis xml directamente a la dirección de las imágenes que se almacenan en la res/dibujable directorio en mi proyecto.

Me pregunto si no se trata explícitamente de acuerdo para crear un subdirectorio dentro de la imagen de directorio.

Por ejemplo, si yo tenía la siguiente estructura de directorios:

res/drawable
-- sandwiches
  -- tunaOnRye.png
  -- hamAndSwiss.png
-- drinks
  -- coldOne.png
  -- hotTea.png

Podría hacer referencia a la imagen de un sándwich de ensalada de atún como @dibujable/sandwiches/tunaOnRye

O tengo que mantener la jerarquía de la plana en el dibujable directorio.

351voto

Reto Meier Puntos 55904

No, el mecanismo de los recursos no admite subcarpetas en el directorio estirable, así que sí - que necesita para mantener esa jerarquía plana.

La estructura de directorios que apareciste daría lugar a ninguna de las imágenes que son disponibles.

Desde mi propia experiencia, parece que tiene una subcarpeta con cualquier artículo en que, dentro del res/drawable carpeta, hará que el compilador de recursos para fallar - la prevención de la R.java archivo que se genere correctamente .

98voto

Cheezmeister Puntos 2109

La solución que estoy usando (y el propio Android parece favor) consiste esencialmente en sustituir un carácter de subrayado para una barra diagonal, por lo que su estructura sería algo como esto:

sandwich_tunaOnRye.png
sandwich_hamAndSwiss.png
drink_coldOne.png
drink_hotTea.png

El método requiere que usted para ser meticuloso en su denominación y no hacer que sea mucho más fácil para disputar los propios archivos (si usted decidió que las bebidas y sándwiches de realidad debería ser todos "food", tendría que hacer una masa de cambiar el nombre en lugar de simplemente mover al directorio); pero su programación de la lógica de la complejidad no sufre demasiado mal en comparación con la estructura de carpetas equivalente.

Esta situación apesta de verdad. Android es un cajón de sastre de la maravillosa y terrible de las decisiones de diseño. Sólo podemos esperar para la segunda parte para conseguir eliminados con la debida celeridad :)

20voto

Lemonsanver Puntos 903

Sí - no chupar :) Sin embargo, usted puede utilizar la carpeta de activos y tienen subdirectorios allí y cargar imágenes de esa manera.

16voto

milkia Puntos 147

Utilice carpeta activos.

código de ejemplo:

 InputStream is = null;
try {
    is = this.getResources().getAssets().open("test/sample.png");
} catch (IOException e) {
    ;
}

image = BitmapFactory.decodeStream(is);
 

8voto

Rene Puntos 2051

Me gusta usar un script sencillo para aplanar una estructura de directorios organizada proporcionada por los diseñadores a algo que se puede utilizar para generar un archivo de R.

Corre con la ruta actual en dibujable-IPAP:

 #! /bin/bash
DIRS=`find * -type d`
for dir in ${DIRS} ; do 
  for file in `ls ${dir}` ; do
    mv ${dir}/${file}  ${dir}_${file};
  done 
  rmdir ${dir};
done
 

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X