我采用了ImageLoader框架,加载图片,发现开机的时候,经常瞬间显示默认的那种图片,随后再显示要展现的广告图片。不知道什么原因,请大神帮忙看一下。
附上代码:
一,imageloader 对图片进行设置的代码
private ImageLoaderController(Context context) {
mImageLoader = ImageLoader.getInstance(); //实例化ImageLoader,每个布局里面都要实例化后再使用
File cacheDir = StorageUtils.getOwnCacheDirectory(context,
"imageloader/Cache");
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.threadPoolSize(3) //线程池数量
.discCache(new UnlimitedDiscCache(cacheDir)) //自定义缓存路径
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator()) //将保存的时候的URI名称用MD5加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
.memoryCache(new WeakMemoryCache())
.build(); //开始构建
ImageLoader.getInstance().init(config); //全局初始化此配置
optionsBig = getDisplayImageOptions(R.drawable.image_offer_default);
optionsIcon = getDisplayImageOptions(R.drawable.icon_default);
optionsGift = getDisplayImageOptions(R.drawable.icon_gift);
optionsBanner = getDisplayImageOptions(R.drawable.image_banner_default);
}
public static synchronized ImageLoaderController getInstance(Context context) {
if (null == mVolleyContrller) {
mVolleyContrller = new ImageLoaderController(
context.getApplicationContext());
}
return mVolleyContrller;
}
/**
* 图片请求配置
*
* @param default_drawable
* @return
*/
private DisplayImageOptions getDisplayImageOptions(int default_drawable) {
//显示图片的各种格式的设置
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(default_drawable) //没有图片资源时的默认图片
.showImageOnFail(default_drawable) //加载失败的图片
.showImageOnLoading(default_drawable) //加载图片是的图片
.cacheInMemory(true) //启用内存缓存
.cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED) //图片会缩放到目标大小
// .displayer(new RoundedBitmapDisplayer(20)) //设置显示风格这里是圆角矩形
.displayer(new SimpleBitmapDisplayer())
.build();
return options;
}
/**
* 加载图片
*
* @param uri
* 图片地址
* @param imageView
* ImageView
* @param defaultDrawable
* 默认的图片
* @param listener
* 回调
*/
public void displayGift(String uri, ImageView imageView,
ImageLoadingListener listener) {
mImageLoader.displayImage(uri, imageView, optionsGift, listener);
}
/**
* 加载图片
*
* @param uri
* 图片地址
* @param imageView
* ImageView
* @param listener
* 加载监听
*/
public void displayIcon(String uri, ImageView imageView,
ImageLoadingListener listener) {
mImageLoader.displayImage(uri, imageView, optionsIcon, listener);
}
/**
* 加载图片
*
* @param uri
* 图片地址
* @param imageView
* ImageView
* @param listener
* 加载监听
*/
public void displayBigImage(String uri, ImageView imageView,
ImageLoadingListener listener) {
mImageLoader.displayImage(uri, imageView, optionsBig, listener);
}
/**
* 加载Banner图片
*
* @param uri
* 图片地址
* @param imageView
* ImageView
* @param listener
* 加载监听
*/
public void displayBannerImage(String uri, ImageView imageView,
ImageLoadingListener listener) {
mImageLoader.displayImage(uri, imageView, optionsBanner, listener);
}
二,加载图片时的代码,
/**
* 展示广告图片
*/
private void setOfferData() {
if (null != mOffer) {
if (TextUtils.isEmpty(mOffer.background)) {
mIvOfferImage.setImageResource(R.drawable.image_splash);
} else {
ImageLoaderController.getInstance(mContext).displayBigImage(mOffer.background, mIvOfferImage,
new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
mIvOfferImage.setImageBitmap(loadedImage);
//mOfferImage = loadedImage;
// 为避免CPU休眠,强制刷新一次
mRootView.invalidate();
// 发送广告展现报告
ReportController.getInstance().report(
ReportType.RT_ShowAd, mOffer.tr);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});