Glide有自动缓存的功能,但也是第一次先得加载一遍才行,如果进了加载图片的那个页面再进行加载的话,会有一小段时间的空白区,毕竟网络请求也是需要时间的,所以在特殊的时候,我们要采用glide的一些方法,可以让其提前就进行加载缓存,这样到达我们需要加载的页面就会显示的非常快,毕竟已经缓存到本地了。
必须在子线程中
new Thread(new Runnable() {
@Override
public void run() {
FutureTarget<File> fileFutureTarget = Glide.with(MainActivity.this)
.load(url)
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
try {
File file = fileFutureTarget.get();
System.out.println(file+"路径");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}).start();
当需要显示时,直接照常加载即可
需要注意的是,这里必须将硬盘缓存策略指定成DiskCacheStrategy.SOURCE或者DiskCacheStrategy.ALL,否则Glide将无法使用我们刚才下载好的图片缓存文件。
Glide.with(MainActivity.this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(img);
glide也有加载完成的监听,适合于需要把图片加载出来再进行的操作
Glide.with(CountDownActivity.this) .load("http://i6.265g.com/images/201712/201712210138133238.gif") .crossFade() .into(new GlideDrawableImageViewTarget(adimg){ @Override public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) { super.onResourceReady(resource, animation); //在这里进行你的操作 } });