【问题标题】:Can I load images synchronously with Glide?我可以使用 Glide 同步加载图像吗?
【发布时间】:2016-02-09 16:09:15
【问题描述】:

我知道从设备存储同步加载位图不太实际,但我确实必须这样做。我还没有想出任何方法来做到这一点。

【问题讨论】:

  • 我认为他们看不到需要这样做的用例。
  • 但我真的必须这样做。你介意在这一点上详细说明一下吗?
  • 我使用一个库,它的一个方法负责管理通知。我必须实现一个函数,它会为库返回一个通知。我使用 RemoteView,它包含一个 ImageView,但是因为在通知创建后我无法修改通知,只有重新创建通知,我必须在加载位图后“延迟”通知的创建。
  • 请更具体地说明您要执行的操作。 “来自设备存储”是含糊的。完成后你需要它以什么格式进入内存?
  • 我将专辑封面的 uri(想想音频文件)传递给 Glide。

标签: android android-glide


【解决方案1】:

可以,并且在glide 文档中。

例如,如果您需要同步检索位图,您可以这样做:

滑翔 V3:

Bitmap myBitmap = Glide.with(applicationContext)
.load(yourUrl)
.asBitmap()
.into(500, 500)
.get()

滑翔 v4:

FutureTarget<Bitmap> futureBitmap = Glide.with(applicationContext)
                           .asBitmap()
                           .load(yourURL)) 
                           .submit();
Bitmap myBitmap = futureBitmap.get();

注意:此代码需要后台运行,否则应用会崩溃。

【讨论】:

  • 如果你在主线程上这样做,它会抛出一个错误,说你必须在另一个线程上调用它。确定阻塞线程,但确保它不是主线程。
  • 那是 v3,v4 怎么样。
【解决方案2】:

图片加载后使用接口加载数据是更好的选择。

创建一个名为 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);
    }
});

在这里,reference 将是您创建 setter 方法的对象。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    相关资源
    最近更新 更多