我在ListView中使用Universal Image Loader。我的问题是以下用例:
当我滚动列表视图时,它完美运行,并加载所有图像。让我们假设,我在listview的屏幕上有2个项目,它们处于下载进度中。我可以通过ImageLoadingProgressListener()
看到它的进展,只要我滚动到任何地方并回到相同的图像,进展再次开始,以前下载的数据丢失!有没有办法存储下载的进度,以便稍后当我们回到listview中的图像时,它可以恢复该过程。
编辑:我可以在下载后缓存这些图像,并且还可以使用这些缓存的图像,我的问题是那时正在下载,滚动和回来。
我的DisplayImageOptions
:
options = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(100))
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
我的ImageLoaderConfiguration
:
new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(50 * 1024 * 1024) // 50 Mb
.tasksProcessingOrder(QueueProcessingType.LIFO)
.writeDebugLogs() // Remove for release app
.build();
我的getView()
:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.card, parent,false);
holder = new ViewHolder();
holder.ivContent = (ImageView) convertView.findViewById(R.id.ivContent);
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
try {
ImageLoader.getInstance().displayImage(url, holder.ivContent, options, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,Bitmap loadedImage){
holder.ivContent.setVisibility(View.VISIBLE);
}
},
new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String arg0, View arg1, int count, int total) {
System.out.println("prog: "+(count*100)/total);
//holder.ivLoaderUp.setClipping((count*100)/total);
}
});
}
catch (ParseException e) {
e.printStackTrace();
}
return convertView;
}
有没有人遇到这个问题,请帮忙。
答案 0 :(得分:1)
使用最新版本的Image加载程序库,但我建议您尝试智能映像,只需从以下URL下载库即可 的 http://www.4shared.com/folder/iw0vL8m6/_online.html 强> 将此jar文件放在Android应用程序的libs /文件夹中。
将SmartImageView添加到活动的xml布局中:
<com.loopj.android.image.SmartImageView
android:id="@+id/my_image" />
在Activity
SmartImageView myImage = (SmartImageView) this.findViewById(R.id.my_image);
将图像从URL加载到视图中:
myImage.setImageUrl("http://www.YOUR_URL/myawesomeimage.jpg");
它是我使用Image loader的最好的一个,但这个库很有效率。
答案 1 :(得分:1)
您可以找到为何重新开始加载的答案 - here。如果加载的图像数据少于75%,UIL将中止下载。如果您想要更改它,那么您应该更改IoUtil
类的来源。改变常数:
public static final int CONTINUE_LOADING_PERCENTAGE = 75;
到
public static final int CONTINUE_LOADING_PERCENTAGE = 0;
答案 2 :(得分:0)
我建议你为此尝试AQuery。
您可以从here下载jar文件,下载jar文件并将jar设置为Build Path。
AQuery androidAQuery=new AQuery(this);
作为直接从网址加载图片的示例:
androidAQuery.id(ucover).image(user_pro, true, true); // Here, true, true means fileCache and MemoryCache respectively. So you can store it in memory or in file, so each and every time it will not downloaded.