Bourne
Con versiones anteriores de Android Studio, todas las carpetas de cubos dibujables se crearon de manera predeterminada (es decir, drawable-mdpi, drawable-hdpi, etc.). En las versiones más recientes de Android Studio, solo proporciona drawable y drawable-v21. ¿Porqué es eso?
¿Hay alguna razón por la que Android (en su infinita sabiduría) ya no te da las carpetas de cubo separadas?
Solo para tener en cuenta, sé que puede agregarlos manualmente, pero quiero asegurarme de que no haya alguna nueva razón de mejores prácticas para no usar más esas carpetas.
Bourne
Gracias a todos los que intentaron ayudar. Me ayudaste a llegar a la respuesta final, pero ninguna solución fue del todo correcta. @user3137702 fue probablemente el más cercano, ya que ESTÁ relacionado con todo el cambio a vectores/SVG. No pude encontrar una respuesta definitiva, como algo directamente de Google (aunque me imagino que está disponible), pero por lo que he recopilado de un montón de artículos, probablemente haya una razón por la que están haciendo esto.
Para empezar, parece que esto comenzó en Android Studio 1.4. Estoy en 1.5 ahora mismo. Parece que Android se está moviendo en la dirección de no necesitar que crees tus propias carpetas de densidad (es decir, mdpi, hdpi, etc.) para dibujables (mipmaps es diferente, así que no lo confundas con lo que estoy hablando) . A partir de Android Studio 1.4, tomará los SVG que coloque en la carpeta dibujable normal (no en la carpeta v21), los convertirá a PNG y los colocará en carpetas de densidad generadas automáticamente durante la secuencia de compilación (por lo que Gradle hace esto por usted, esencialmente) para todas las versiones anteriores a API 21. Para 21 y más, SVG es compatible de manera diferente, que es un tema completamente diferente. ¡Pero esto esencialmente hace que el soporte SVG sea compatible con versiones anteriores hasta API 1!
SIN EMBARGO, hay una GRAN captura. Esta conversión de SVG no siempre es tan exitosa como cabría esperar. Solo admite un subconjunto de archivos SVG, por lo que, dependiendo de cómo lo guarde (es decir, qué configuración se aplica al guardar), es posible que no se reproduzca correctamente. Incluso las configuraciones de uso común, como los rellenos de degradado y patrón, las referencias IRI locales y las transformaciones NO son compatibles (todavía). Si está trabajando con archivos SVG que no generó, es probable que tenga problemas para importarlos. Si usted o alguien con quien trabaja los genera directamente, es posible que deba experimentar con la forma en que guarda los archivos, y debe probar las compilaciones con frecuencia en versiones anteriores de Android para asegurarse de que resultó como se esperaba.
Para importar archivos SVG a Android Studio 1.4+, siga estos sencillos pasos:
- Haz clic derecho en la carpeta res/drawable
- Seleccione “Nuevo”
- Seleccione “Activo vectorial”
- En este punto, puede seleccionar un “Ícono de material”, que funciona muy bien, y hay un montón de hermosos íconos “gratuitos” entre los que puede seleccionar. Para los desarrolladores independientes, sin soporte de diseño de íconos, ¡esto es bueno!
- O – puede seleccionar “Archivo SVG local”
- Luego elija un SVG de cualquiera de las opciones con la opción “elegir”. ADVERTENCIA: Aquí es donde posiblemente podría salir mal, si el SVG que importa no se guarda correctamente.
- Presiona “Siguiente”
- Verifique que se esté guardando en el lugar correcto y luego haga clic en “Finalizar”
- En este punto, se puede hacer referencia con: android:icon=”@drawable/ic_imagename” (usando el nombre de su imagen en lugar de ic_imagename, por supuesto)
La respuesta de @CommonsWare fue muy útil para llegar a la solución correcta, pero por lo que vi, al generar varias variaciones de nuevos proyectos a partir de diferentes plantillas y configuraciones de soporte de versiones, no había ninguna forma de que las carpetas de densidad antiguas se generaran automáticamente. . Definitivamente hay más en juego aquí que solo una selección de versión de plantilla diferente. Pero como dijo, dependiendo de la plantilla/versión que seleccione, puede terminar con un conjunto diferente de esos dos tipos de carpetas dibujables. Pero específicamente para mi pregunta, Android Studio parece estar poniendo énfasis en este nuevo enfoque de no crear sus propias carpetas individuales de densidad dibujable.
Es bastante bueno, en mi opinión, pero aún necesita algo de trabajo. En términos prácticos, es probable que aún necesite agregar las carpetas de densidad dibujables para admitir todas las imágenes con las que trabajo, hasta que este mecanismo sea un poco más compatible con todos los tipos de representaciones SVG.
Y un dato más: debido a que todo esto se maneja a través de Gradle (la generación real de las carpetas de densidad), puede agregar configuraciones de compilación a través del mecanismo de sabor para limitar las carpetas de densidad que desea generar. Entonces, si, por ejemplo, cree que las imágenes mdpi han llegado al final de su utilidad para su base de usuarios en particular y desea dejar ese tamaño/densidad fuera de su aplicación para reducir un par de MB del tamaño de la aplicación, puede configurarlo en el sabor de construcción de Gradle.
-
Sí, la clave es que debe hacer clic en “Nuevo” -> “Activo vectorial” para crear el XML dibujable a partir del archivo SVG.
– Igor Ganapolski
14/01/2016 a las 21:44
-
¿Esto es solo para SVG? Quiero copiar un archivo .PNG a dibujable. Tengo dos opciones drawable y drawable-v24. ¿En qué carpeta tenemos que copiar?
–K Pradeep Kumar Reddy
16 de septiembre de 2020 a las 9:13
Recuerdo haber leído algo acerca de que hay una nueva práctica recomendada que están tratando de fomentar: usar SVG para sus elementos de diseño en lugar de imágenes rasterizadas, por lo que solo necesita una imagen que se pueda cambiar de tamaño limpiamente.
– alzee
17 dic 2015 a las 20:26
creo que es en parte debido a la introducción de la carpeta mipmaps
– usuario2511882
17 dic 2015 a las 20:31
Gracias por la nota. Por lo que recuerdo, solo las versiones más nuevas de Android solo admiten SVG, por lo que no funcionaría en la mayoría de los proyectos en los que trabajo, pero investigaré si ese es el posible motivo. Y también puedo estar equivocado sobre el tema de SVG, ya que no es compatible con versiones anteriores, ¡lo comprobaré!
– Bourne
17 dic 2015 a las 20:32
@ user2511882 Según el blog de Google, se supone que mipmaps solo se debe usar para los íconos de la aplicación. Así que todavía estoy tratando de averiguar dónde colocar los otros activos.
– Bourne
17 dic 2015 a las 20:33
@Bourne, ¿qué versión es esta? 1.5?
– usuario2511882
17 dic 2015 a las 20:34