Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以与Glide同步加载图像吗?_Android_Android Glide - Fatal编程技术网

Android 我可以与Glide同步加载图像吗?

Android 我可以与Glide同步加载图像吗?,android,android-glide,Android,Android Glide,我知道从设备存储器同步加载位图不太实际,但我真的必须这样做。我还没有想出任何办法 可以是,并且在文档中 例如,如果需要同步检索位图,可以执行以下操作: 滑翔V3: Bitmap myBitmap = Glide.with(applicationContext) .load(yourUrl) .asBitmap() .into(500, 500) .get() 滑动v4: FutureTarget<Bitmap> futureBitmap = Glide.with(applicati

我知道从设备存储器同步加载位图不太实际,但我真的必须这样做。我还没有想出任何办法

可以是,并且在文档中

例如,如果需要同步检索位图,可以执行以下操作:

滑翔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();
FutureTarget futureBitmap=Glide.with(applicationContext)
.asBitmap()
.load(您的URL))
.submit();
位图myBitmap=futureBitmap.get();

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

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

创建一个名为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.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将是您创建setter方法的对象


我想他们看不到有必要这样做的用例,但我真的必须这样做。您介意详细说明一下这一点吗?我使用一个库,它的一个方法负责管理通知。我必须实现一个函数,它会为库返回一个通知。我使用RemoteView,它包含一个ImageView,但由于我无法在创建后修改通知,只有在重新创建它时,我才能在加载位图后“延迟”创建通知。请更具体地说明您尝试执行的操作。“从设备存储”是模糊的。完成后,你需要它在内存中采用什么格式?我将唱片集艺术的uri(想想音频文件)传递给Glide。如果你在主线程上这样做,它将抛出一个错误,说你必须在另一个线程上调用它。阻塞线程是肯定的,但要确保它不是主线程。这是v3,而不是v4。
reference.setOnGlideLoaded(new OnGlideLoaded() {
    @Override
    public void onGlideLoaded(Drawable drawable) {
        imageView.setImageBitmap(drawable);
    }
});