我希望使用URL显示Facebook个人资料图片,但每当用户更改其个人资料图片时,此图书馆都不会更新缓存图片。
我的UIL版本是1.9.3,显示选项:
private Bitmap getBitmapFromPath(String path)
{
BitmapFactory.Options btmapOptions = new BitmapFactory.Options();
btmapOptions.inSampleSize = 2;
Bitmap bm = BitmapFactory.decodeFile(path, btmapOptions);
return bm;
}
那么我应该如何检查网址中的图片是否发生了变化?或者您可能知道另一个具有此功能的库?
谢谢!
答案 0 :(得分:0)
UIL具有多线程图像加载(异步或同步)。请参阅github上的图书馆功能。
您在光盘上启用缓存(设备的文件系统或SD卡).cacheOnDisk(true)
。库从此缓存加载图像。禁用光盘缓存.cacheOnDisk(false)
并在您的活动中编写以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
DisplayImageOptions displayOptions = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_preview)
.showImageForEmptyUri(R.drawable.ic_preview)
.showImageOnFail(R.drawable.ic_preview)
.cacheInMemory(true)
.cacheOnDisc(false)
.considerExifParams(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.writeDebugLogs()
.defaultDisplayImageOptions(displayOptions)
.build();
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(config);
AnimateFirstDisplayListener animate = new AnimateFirstDisplayListener();
imageLoader.displayImage(YourImageURL, userIv, animate);
...
}
public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 500);
displayedImages.add(imageUri);
}
}
}
}