我知道同步加载来自设备存储的位图并不是很实际,但我真的必须这样做。我还没有想出办法。
答案 0 :(得分:18)
是可以的,并且在glide文档中。
例如,如果您需要同步检索位图,则可以执行以下操作:
Glide V3:
Bitmap myBitmap = Glide.with(applicationContext)
.load(yourUrl)
.asBitmap()
.into(500, 500)
.get()
Glide v4:
FutureTarget<Bitmap> futureBitmap = Glide.with(applicationContext)
.asBitmap()
.load(yourURL))
.submit();
Bitmap myBitmap = futureBitmap.get();
注意:此代码需要在后台运行,否则应用程序将崩溃。
答案 1 :(得分:0)
在图片加载后使用接口加载数据是更好的选择。
创建一个名为 OnglideLoaded.java 的新文件,如下所示:
import android.graphics.drawable.Drawable;
public interface OnGlideLoaded {
void onGlideLoaded(Drawable drawable);
}
现在为它创建 setter 方法,就像 glide 所在的位置:
public void setOnGlideLoaded(OnGlideLoaded onGlideLoaded) {
this.onGlideLoaded = onGlideLoaded;
}
不要在 Glide Target 中调用它:
Glide.with(context)
.asBitmap()
.load(uri)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
icon = resource;
if (onGlideLoaded!=null){
//This will send the image to every registered interface
onGlideLoaded.onGlideLoaded(icon);
}
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
现在像这样在你想要图像的地方调用接口:
reference.setOnGlideLoaded(new OnGlideLoaded() {
@Override
public void onGlideLoaded(Drawable drawable) {
imageView.setImageBitmap(drawable);
}
});
<块引用>
在这里,引用将是您创建 setter 方法的对象。