Ответ 1
Lazy List - это ленивая загрузка изображений с SD-карты или с сервера с использованием URL-адресов. Это по заказу загружает изображения.
Изображения можно кэшировать на локальную память sd-card или phone. Url считается ключевым. Если ключ присутствует на SD-карте, отображать изображения с SD-карты, другие отображают изображение, загружая с сервера и кешируют то же самое в выбранное вами местоположение. Предел кеша может быть установлен. Вы также можете выбрать свое местоположение для кэширования изображений. Кэш также можно очистить.
Вместо того, чтобы ждать загрузки больших изображений и отображения ленивого списка, загружает изображения по требованию. Поскольку изображения кэшируются, вы можете отображать изображения в автономном режиме.
https://github.com/thest1/LazyList. Lazy List
В вашем getview
imageLoader.DisplayImage(imageurl, imageview);
Метод отображения ImageLoader
public void DisplayImage(String url, ImageView imageView) //url and imageview as parameters
{
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url); //get image from cache using url as key
if(bitmap!=null) //if image exists
imageView.setImageBitmap(bitmap); //dispaly iamge
else //downlaod image and dispaly. add to cache.
{
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
}
}
Альтернативой Lazy List является универсальный загрузчик изображений
https://github.com/nostra13/Android-Universal-Image-Loader. Он основан на Lazy List (работает по тому же принципу). Но у него много других конфигураций. Я бы предпочел использовать **** Universal Image Loader ****, потому что он дает вам больше возможностей настройки. Вы можете отобразить изображение ошибки, если downlaod не удалось. Может отображать изображения с закругленными углами. Может кэшировать диск или память. Может сжимать изображение.
В вашем пользовательском конструкторе адаптера
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
Вы можете настроить другие параметры в соответствии с вашими потребностями.
Наряду с ленивой загрузкой /Universal Image Loader вы можете просматривать держатель для плавной прокрутки и производительности. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.