Как я могу просто загрузить изображение с помощью 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. Вы можете получить то же самое позже использовать.
для кэширования растровых изображений вы можете записать изображения в папку на 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
параметр также является необязательным, поэтому вы можете исключить это при необходимости.