当前位置: 首页 > 面试题库 >

在Glide中使用Firebase Storage映像

吕俊美
2023-03-14
问题内容

我几乎尝试了所有答案,但有很多重复的答案,但是我仍然无法在Glide中使用Firebase存储映像。

首先我正在使用文档

    FirebaseStorage storage  = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReference();
    StorageReference pathReference = storageRef.child("sorular/1.jpg");

   // ImageView in your Activity
   ImageView imageView = rootView.findViewById(R.id.imageView);

   // Load the image using Glide
   Glide.with(this /* context */)
        .using(new FirebaseImageLoader()) // Cannot resolve method 'using
        .load(pathReference)
        .into(imageView);

如果我清理Glide的.using部分,logcat会出现此错误:

E / GlideExecutor:请求抛出未抛出的com.bumptech.glide.Registry $
NoModelLoaderAvailableException:无法在com.bumptech.glide上找到模型的任何ModelLoader:gs:
//123...appspot.com/sorular/1.jpg。
Registry.getModelLoaders(Registry.java:227)

在com.bumptech.glide.load.engine.DecodeHelper.getLoadData(DecodeHelper.java:179)在com.bumptech.glide.load.engine.DecodeHelper.getCacheKeys(DecodeHelper.java:197)在com.bumptech.glide.load
com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:282)上的.engine.ResourceCacheGenerator.startNext(ResourceCacheGenerator.java:41)在com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob)
.java:249)位于com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:222)(

位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133))。
ThreadPoolExecutor $
Worker.run(ThreadPoolExecutor.java:607)在java.lang.Thread.run(Thread.java:761)
在com.bumptech.glide.load.engine.executor.GlideExecutor $
DefaultThreadFactory $ 1.run(GlideExecutor.java:347)

那么如何才能以最佳方式在我的Android应用程序中使用Firebase存储映像?

这也是我的构建gradle依赖项:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support:palette-v7:27.0.2'
    implementation "com.android.support:cardview-v7:27.0.2"
    implementation "com.android.support:recyclerview-v7:27.0.2"
    implementation "com.android.support:support-v4:27.0.2"
    implementation 'com.android.support:design:27.0.2'

    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.github.florent37:materialviewpager:1.2.3'


    implementation 'com.google.firebase:firebase-database:11.8.0'
    implementation 'com.google.firebase:firebase-storage:11.8.0'
    implementation 'com.firebaseui:firebase-ui-storage:2.0.1'
    implementation 'com.google.firebase:firebase-auth:11.8.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

问题答案:

更改此:

 implementation 'com.firebaseui:firebase-ui-storage:2.0.1'

对此:

  implementation 'com.firebaseui:firebase-ui-storage:3.2.1'

根据Glide文档:

using()

在Glide
4中删除了using()API,以鼓励用户向AppGlideModule注册其组件一次,以避免重复使用对象。无需在每次加载图像时都创建一个新的ModelLoader,而是在AppGlideModule中将其注册一次,然后让Glide检查模型(传递给load()的对象)以弄清楚何时使用注册的ModelLoader。

为了确保仅对某些模型使用ModelLoader,请实现上述的handles()以检查每个模型,并仅在应使用ModelLoader时返回true。

using() 已从Glide 4中删除。

要解决此问题,您需要执行以下操作:要从StorageReference加载图像,请首先注册一个AppGlideModule:

  @GlideModule
public class MyAppGlideModule extends AppGlideModule {

@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
    // Register FirebaseImageLoader to handle StorageReference
    registry.append(StorageReference.class, InputStream.class,
            new FirebaseImageLoader.Factory());
  }
}

一旦创建了AppGlideModule类并完成了干净的构建,就可以使用GlideApp将StorageReference加载到ImageView中:

// Reference to an image file in Cloud Storage
StorageReference storageReference = ...;

// ImageView in your Activity
ImageView imageView = ...;

// Download directly from StorageReference using Glide
// (See MyAppGlideModule for Loader registration)
GlideApp.with(this /* context */)
        .load(storageReference)
        .into(imageView);

此处提供更多信息:https : //github.com/firebase/FirebaseUI-
Android/tree/master/storage



 类似资料:
  • 我正在使用Glide库在imageview中加载图像,并使用以下代码。 灰色占位符在图像未加载之前可见,但在图像在imageview中加载后,占位符仍会出现,并在该图像后显示一些空白。 我如何解决这个问题。如果你有任何想法,请帮助我。

  • 我第一次使用Glide在ImageView中显示GIF。我已经按照几个站点的方式对其进行了编码。但它不起作用。我已经给出了以下所有代码:(如果我弄错了什么,请告诉我) 项目级build.gradle 应用程序级构建。gradle文件: activity_main.xml 活动Java代码: 单击“提交”按钮后,我没有看到GIF图像。

  • 我无法上载firebase存储上的配置文件图像。我正在把烤面包片上的错误打印出来。为什么会出现这种情况?我无法解决这个问题,我审查了我的代码很多次。问题可能是什么?我如何调整我的代码以使其正常工作?提前向大家表示感谢。

  • 我使用滑翔库来显示网格视图中的图像,但是在我的图像视图中显示了注释。 E/Glide:class com。邦普泰克。滑行负载发动机GlideException:无法加载资源 我的代码在使用位图时工作正常。这是我的密码:

  • 我知道如何使用滑翔将图像插入到常规ImageView中 (

  • 问题内容: 如何使用Glide库将位图加载到ImageView中?我想使用文本创建自定义图像,然后使用Glide将其加载到imageview中。 这是我用文本创建自定义位图的方法 But when i try to load this bitmap using glide i’m getting error 问题答案: @rookiedev是正确的, Glide中没有load(Bitmap)它,这