Zba*_*ian 10 android image-caching android-glide
我正在使用Glide在Android上下载和缓存图像.一切都很好,除了我不想直接加载位图ImageView
,我不想有淡入淡出动画,也不想有图像占位符.
我想要的只是创建一个全局方法,它将帮助我在整个应用程序中下载图像.
public class MyApp extends Application {
public static void downloadImage(String url, final OnImageLoadedCallback callback) {
// And how to implement the listener ?
RequestListener<String, Bitmap> requestListener = new RequestListener<String, Bitmap() {
@Override
public boolean onException(Exception exc, String string, Target<Bitmap> target, boolean isFirstResource) {
callback.onDone(null);
return false;
}
@Override
public boolean onResourceReady(Bitmap bitmap, String string, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) {
callback.onDone(bitmap);
return false;
}
};
Glide.with(context)
.load(url)
.asBitmap()
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(requestListener);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何实现监听器.RequestListener
完全没有被召唤.
Sam*_*udd 15
在滑翔载荷不启动,直到您对呼叫进入.RequestListener接口观察请求,但通常不用于处理结果.不要使用RequestListener,而应考虑让您的回调实现Target接口并使用into传递它.
或者,您可以扩展SimpleTarget并将其传递给每个请求,方法与尝试使用RequestListener的方式相同:
Target target = Glide.with(context)
...
.into(new SimpleTarget<Bitmap>(width, height) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
callback.onDone(resource);
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
callback.onDone(null);
}
});
// At some point later, if you want to cancel the load:
Glide.clear(target);
Run Code Online (Sandbox Code Playgroud)
您需要提供宽度和高度,以便Glide可以适当地下采样和变换图像.如果您在视图中显示这些位图,也可能会遇到取消问题,在这种情况下,我强烈建议您将视图提供给您的加载API并将视图传递到其中,以便为您处理大小调整和取消.
我使用Glide 3.7.0并以这种方式下载图像:
重要的是要注意 - 它是异步执行的
Glide.with(this)
.load(url)
.downloadOnly(new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
LOGGER.debug("Photo downloaded");
}
});
Run Code Online (Sandbox Code Playgroud)
当我需要显示缓存的图像时,我使用相同的URL和DiskCacheStrategy.SOURCE
:
Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(imageView);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21085 次 |
最近记录: |