Cómo agregar un ImageLoader en android

Tengo una aplicación para juegos de Android en la que cada nivel tiene una image de 250 * 250 (píxeles) y todos los niveles están en una Actividad llamada "game1.java". porque muchas características de layout cambian en los niveles; Llamo a la misma class usando Intent y termino () la class cuando quiero cambiar el nivel del juego. en eso tengo un problema en el uso del ram y traté de usar esto en la class game1:

https://github.com/nostra13/Android-Universal-Image-Loader

pero obtengo Desafortunadamente cada vez que quiero abrir la actividad.

este es un atributo de la class game1:

ImageLoader imageLoader; 

esta parte está al inicio de onCreate:

  super.onCreate(savedInstanceState); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(config); File cacheDir = StorageUtils.getCacheDirectory(getBaseContext()); DisplayImageOptions options = new DisplayImageOptions.Builder() .resetViewBeforeLoading(false) // default .delayBeforeLoading(0) .cacheInMemory(false) // default .cacheOnDisk(true) // default .build(); 

cada vez que necesito una nueva image, llamo a esta function y le doy el nombre strName y la extensión de mi image que está en la carpeta de activos. por ejemplo, "image1.jpg"

 private Bitmap getBitmapFromAsset(String strName) { String imageUri = "assets://" + strName; //Bitmap bmp = ImageLoader.getInstance().loadImageSync(imageUri); imageLoader.loadImage(imageUri,new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); bmp_loader=loadedImage; } }); return bmp_loader; } 

luego le doy la image al ImageView a través de la function setImageBitmap

¿Dónde está el problema?

usando las ayudas de mis amigos; esto es lo que finalmente hice para solucionar el problema:

paso 1: configuro mi cargador en la primera actividad de mi juego; en el onCreate:

 DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() .bitmapConfig(Bitmap.Config.RGB_565) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(getBaseContext()) .defaultDisplayImageOptions(defaultOptions) .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) .discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator()) .build(); 

paso 2:

en el juego1.class; después de super.oncreate:

  ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(config); File cacheDir = StorageUtils.getCacheDirectory(getBaseContext()); DisplayImageOptions options = new DisplayImageOptions.Builder() .resetViewBeforeLoading(false) // default .delayBeforeLoading(0) .cacheInMemory(false) // default .cacheOnDisk(true) // default .build(); 

Le di la imageaddress que necesitaba a una cadena

  ax_level = "level_01.jpg"; 

definió mi image

 ImageView posht_safhe = (ImageView) findViewById(R.id.rook_ax); 

dio la image a mi imageView

 String pin_url = "assets://"+ax_level; DisplayImageOptions option = new DisplayImageOptions.Builder() .cacheOnDisc(true) .cacheInMemory(false ) .bitmapConfig(Bitmap.Config.RGB_565) .build(); ImageLoader.getInstance().displayImage(pin_url ,posht_safhe, option, new SimpleImageLoadingListener() { @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { // bitmap = loadedImage; } }); 

y finalmente funcionó

este es un error muy simple 🙂 ¡no definiste imageLoader y el imageLoader es nulo cuando tratas de llamar a loadImage(...) !

cambie su código ImageLoader.getInstance().init(config); a esto

 imageLoader = ImageLoader.getInstance(); imageLoader.init(config); 

Biblioteca sencilla, de muestra y flexible para cargar, almacenar en caching y mostrar imágenes en Android.

Cómo include

Con gradle: edite su build.gradle :

 allprojects { repositories { ... maven { url "https://jitpack.io" } } } dependencies { compile 'com.github.techstar-inc:image-loader:v1.0.0' } 

O declararlo en tu pom.xml :

 <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependency> <groupId>com.github.techstar-inc</groupId> <artifactId>image-loader</artifactId> <version>v1.0.0</version> </dependency> 

Cómo utilizar

Uso Básico

agregue los siguientes permissions a su AndroidManifest.xml:

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> @Override public void onCreate(Bundle savedInstanceState) { ... ImageView imageView = (ImageView) findViewById(R.id.my_image_view); ImageLoader imageLoader=new ImageLoader(context); imageLoader.DisplayImage(url, imageView); }