我正面临一些关于图像加载的问题。我使用图像加载器从服务器加载图像,但加载图像需要太多的时间延迟。 这是我的imageload代码:
初始化DisplayImageOptions。
options = new DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisc(true).resetViewBeforeLoading(true)
.showImageForEmptyUri(R.drawable.user_icon)
.showImageOnFail(R.drawable.user_icon)
.showImageOnLoading(R.drawable.loading).build();
加载图片:
ImageLoader.getInstance().displayImage(base64Image, holder.profile_image, options);
答案 0 :(得分:3)
删除方法resetVideBeforeLoading。检查我通常申请的样本:
// Create a public utility class
public static ImageLoaderConfiguration getConfig(Context context) {
return new ImageLoaderConfiguration.Builder(context)
.memoryCacheExtraOptions(480, 800)
.diskCacheExtraOptions(480, 800, null)
.threadPriority(Thread.NORM_PRIORITY - 2)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))
.memoryCacheSize(2 * 1024 * 1024)
.diskCache(new UnlimitedDiskCache(context.getCacheDir()))
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(context))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build();
}
public static DisplayImageOptions getOptions() {
return new DisplayImageOptions.Builder()
.resetViewBeforeLoading(true)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(false) // Default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // Default
.bitmapConfig(Bitmap.Config.ARGB_8888) // Default
.displayer(new SimpleBitmapDisplayer()) // Default
.handler(new Handler()) // Default
.build();
}
使用:
ImageLoader.getInstance().init(Utils.getConfig(context));
ImageLoader.getInstance().displayImage(
imageUrl,
mImageView,
Utils.getOptions(), new ImageLoadingListener() {
@Override
public void onLoadingStarted(String s, View view) {
// Show loader
}
@Override
public void onLoadingFailed(String s, View view, FailReason failReason) {
// Show error message
}
@Override
public void onLoadingComplete(String s, View view, Bitmap bitmap) {
// Hide loader
}
@Override
public void onLoadingCancelled(String s, View view) {
}
});