使用Glide预加载多个图像
我们正在尝试将 到缓存中,以便稍后加载(图像位于应用程序的 中)
我们尝试了什么:
Glide.with(this) .load(pictureUri)
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(this)
.load(picture_uri)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.preload();
问题:仅当我们尝试加载/显示图像时才对它们进行缓存:必须先将它们加载到内存中,这样它们才能更快地显示出来。
Glide.with(this) .load(picture_uri)
.into(imageView);
我们还尝试使用GlideModule来增加CacheMemory的大小:
public class GlideModule implements com.bumptech.glide.module.GlideModule { @Override
public void applyOptions(Context context, GlideBuilder
builder.setMemoryCache(new LruResourceCache(100000));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
在清单中:
<meta-data android:name=".GlideModule" android:value="GlideModule"/>
到目前为止没有任何工作。任何想法?
我们尝试使用不可见的1 dp imageView,但结果是相同的:
for(Drawing drawing: getDrawingsForTab(tab)){ Glide.with(this)
.load(drawing.getImage().toUri())
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(mPreloadCacheIv);
for(Picture picture : getPictures()){
Glide.with(this)
.load(picture.getPicture().toUri())
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(mPreloadCacheIv);
}
}
回答:
最好的选择是自己处理缓存,它可以为您提供更多控制权,并且应该很容易,因为您已经知道要加载哪些位图。
首先:设置一个LruCache
LruCache<String, Bitmap> memCache = new LruCache<>(size) { @Override
protected int sizeOf(String key, Bitmap image) {
return image.getByteCount()/1024;
}
};
第二:将位图加载到LruCache
Display display = getWindowManager().getDefaultDisplay();Point size = new Point();
display.getSize(size);
int width = size.x; //width of screen in pixels
int height = size.y;//height of screen in pixels
Glide.with(context)
.load(Uri.parse("file:///android_asset/imagefile"))
.asBitmap()
.fitCenter() //fits given dimensions maintaining ratio
.into(new SimpleTarget(width,height) {
// the constructor SimpleTarget() without (width, height) can also be used.
// as suggested by, An-droid in the comments
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
memCache.put("imagefile", resource);
}
});
第三:使用缓存的位图
Bitmap image = memCache.get("imagefile");if (image != null) {
//Bitmap exists in cache.
imageView.setImageBitmap(image);
} else {
//Bitmap not found in cache reload it
Glide.with(context)
.load(Uri.parse("file:///android_asset/imagefile"))
.into(imageView);
}
以上是 使用Glide预加载多个图像 的全部内容, 来源链接: utcz.com/qa/434233.html