Android: Cómo acceder a las imágenes de los elementos / carpetas dibujables

La aplicación en la que estoy trabajando actualmente tiene cientos de imágenes. Por el momento las guardo en la carpeta 'Drawable'. Estaba pensando en mover todos ellos a la carpeta de activos.

Mi pregunta es: ¿Hay alguna diferencia en el rendimiento cuando se utilizan ambos enfoques?

No creo que haya poca diferencia en el rendimiento de usar estas dos carpetas , creo que usando la carpeta dibujable se pueden obtener fácilmente imágenes (Todos se indexarán en el archivo R, lo que hace que sea mucho más rápido (y mucho más fácil!) Cargarlos.), Y si desea utilizarlo desde el activo, entonces usted tiene que utilizar AssetManager continuación, utilizando AssetFileDescriptor tiene que obtener esas imágenes.

  • Assets también se pueden organizar en una jerarquía de carpetas, que no es compatible con los recursos. Es una forma diferente de administrar los datos. Aunque los recursos cubren la mayoría de los casos, los activos tienen su uso ocasional.

  • En el directorio res/drawable , a cada archivo se le da un ID precompuesto que se puede acceder fácilmente a través de R.id. [res id]. Esto es útil para acceder rápida y fácilmente a imágenes, sonidos, iconos …

Por lo que sé, no debería haber una gran diferencia, pero yo preferiría ir con Drawable.

Drawable le da, al lado de indexación, la opción de luchar con la densidad de pantalla de fragmentación y los activos no deben depender de la densidad. Tener imágenes grandes en pantallas más pequeñas y / o teléfonos con especificaciones más bajas (RAM, CPU) puede causar problemas reales e influenciar la capacidad de uso y la capacidad de respuesta de la aplicación.

Creo que la principal diferencia entre estos dos es que la carpeta Drawable se indexa y se puede obtener el uso de la carga de recursos Android android … Así que creo que no hay diferencia de rendimiento entre estas carpetas de recursos.

En realidad, también conocí los problemas. Quiero que la imagen de mi App ImageView se cargue desde assets / en lugar de res / drawables, de modo que pueda actualizar mi APP desde Internet dinámicamente.

De mi prueba / sensación el funcionamiento es probable ser muy diferente si usted no presta la atención.

  //v.setImageBitmap(ImageUtil.getBitmapFromAsset(this, "data/dog/dog_0001.png", 60, 60)); //v.setImageDrawable(ImageUtil.getDrawableFromAsset(this, "data/dog/dog_0001.png")); v.setImageResource(R.drawable.dog_0001); 

Mi aplicación lo hará por encima de la actividad onCreate. Parece probado que setImageResource es el más rápido.

La razón de mi punto es que la decodificación de activos tomará tiempo que bloqueará el hilo de la interfaz de usuario, mientras que el ID del recurso es más rápido que la decodificación. Vi el código en setImageResource que parece también cargar la imagen. No estoy seguro de por qué mi decodificación es más lento que setImageResource. Pero siento que setImageResource es el más rápido. Estoy tratando de que la decodificación asíncamente decodificar y, a continuación, establecer bitmap.

  • Enviar una imagen codificada en base64 al servidor mediante HttpUrlConnection Android
  • Cómo devolver una imagen de opencv y mostrar en código androide java?
  • La imagen, guardada en sdcard, no aparece en la aplicación Galería de Android
  • Escala de mapa de bits a 80 por ciento
  • Voltear una imagen de mapa de bits horizontal o verticalmente
  • Android - Split Dibujable
  • ¿Es aconsejable almacenar imágenes codificadas en base64 dentro de una base de datos?
  • Guardar imagen en el espacio de almacenamiento local
  • Deslizamiento: cargar de forma desplegable pero no escalar el marcador de posición
  • Tamaño de aplicación grande debido a las imágenes. Cómo comprimir imágenes .PNG?
  • Combinación Android de OpenGL de SurfaceTexture (imagen externa) y textura ordinaria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.