Как я могу просто загрузить изображение с помощью universal-image-loader

насколько я знаю, universal-image-loader предоставляет 2 вида методов отображения изображений. imageLoader.loadImage и imageLoader.displayImage. Но эти 2 метода должны привязываться к элементу UI для отображения. Могу ли я просто загрузить файлы для кэша в потоке (для будущего отображения). Мне не нужно показывать это изображение прямо сейчас.

4 ответов


могу ли я просто загрузить файлы для кэша в потоке (для будущего отображения). Мне не нужно показывать это изображение прямо сейчас.

вы можете загружать файлы с помощью Executor или создавать поток. Вам не нужно использовать universal imageloader.

http://developer.android.com/reference/java/util/concurrent/Executor.html.

вы также можете использовать DownloadManager и сохранить файл в sdcard. Вы можете получить то же самое позже использовать.

http://oodlestechnologies.com/blogs/Downloading-and-Retrieving-Files-on-SD-card-in-Android-using-Android-SDK-in-Eclipse

для кэширования растровых изображений вы можете записать изображения в папку на sdcard.

кэширование растровых изображений

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html.

вы кэшируете растровые изображения в памяти или на диске. По ссылке есть подробности тема.

вы в основном используете UIL ofr отображение изображений в listview или grdiview. Чтобы использовать UIL в listview или gridview, вы можете сделать следующее.

https://github.com/nostra13/Android-Universal-Image-Loader. Он основан на Lazy List (работает по тому же принципу). Но у него много других конфигураций. Вы можете отобразить изображение ошибки, если downlaod не удалось. Может отображать изображения с закругленными углами. Смогите кэшировать на диске или памяти. Может сжимать изображение.

In ваш пользовательский конструктор адаптера

 File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder");

 // Get singletone instance of ImageLoader
 imageLoader = ImageLoader.getInstance();
 // Create configuration for ImageLoader (all options are optional)
 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
      // You can pass your own memory cache implementation
     .discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
     .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
     .enableLogging()
     .build();
 // Initialize ImageLoader with created configuration. Do it once.
 imageLoader.init(config);
 options = new DisplayImageOptions.Builder()
 .showStubImage(R.drawable.stub_id)//display stub image
 .cacheInMemory()
 .cacheOnDisc()
 .displayer(new RoundedBitmapDisplayer(20))
 .build();

в вашем getView ()

 ImageView image=(ImageView)vi.findViewById(R.id.imageview); 
 imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options

вы можете настроить другие параметры в соответствии с вашими потребностями.

наряду с ленивой загрузкой / универсальным загрузчиком изображений вы можете просматривать держатель для плавной прокрутки и производительности. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.


вы все еще можете использовать UIL. На основе displayOptions использовать ниже изображения будут кэшироваться.

см. здесь -https://github.com/nostra13/Android-Universal-Image-Loader

// загрузите изображение, декодируйте его в Bitmap и верните Bitmap в callback

imageLoader.loadImage(imageUri, displayOptions, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        // Do whatever you want with Bitmap
    }
});

Theres loadImage(String uri, ImageLoadingListener listener), Я думаю, вы можете вызвать его с null для слушателя, если он вам не нужен.


добавление к ответу @ Robin Srivastava:

вы также должны создать экземпляр ImageLoader контекст, например: imageLoader = ImageLoader.getInstance(); прежде чем вы можете использовать loadImage метод. The displayOptions параметр также является необязательным, поэтому вы можете исключить это при необходимости.