UIL 更新缓存图像
UIL update cached images
我想使用 URL 显示 Facebook 个人资料图片,但每当用户更改其个人资料图片时,此库不会更新缓存图像。
我的UIL版本是1.9.3,显示选项:
new DisplayImageOptions.Builder()
.showImageOnLoading(android.R.color.white)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.build();
那么我应该如何检查 url 中的图像是否发生了变化?或者您知道另一个具有此功能的图书馆吗?
谢谢!
UIL 具有多线程图像加载(异步或同步)。查看 github.
上的图书馆功能
您在光盘(设备的文件系统或 SD 卡)上启用缓存 .cacheOnDisk(true)
。库从该缓存加载图像。禁用光盘缓存 .cacheOnDisk(false)
并在 Activity 中写入以下代码:
@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);
}
}
}
}
我想使用 URL 显示 Facebook 个人资料图片,但每当用户更改其个人资料图片时,此库不会更新缓存图像。
我的UIL版本是1.9.3,显示选项:
new DisplayImageOptions.Builder()
.showImageOnLoading(android.R.color.white)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.build();
那么我应该如何检查 url 中的图像是否发生了变化?或者您知道另一个具有此功能的图书馆吗?
谢谢!
UIL 具有多线程图像加载(异步或同步)。查看 github.
上的图书馆功能您在光盘(设备的文件系统或 SD 卡)上启用缓存 .cacheOnDisk(true)
。库从该缓存加载图像。禁用光盘缓存 .cacheOnDisk(false)
并在 Activity 中写入以下代码:
@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);
}
}
}
}