使用Glide从Firebase存储中获取图像

我正在尝试使用Glide从Firebase存储加载图像但我收到错误。

package com.kanishq.wallpaper; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.firebase.ui.storage.images.FirebaseImageLoader; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; public class Picture_act extends AppCompatActivity{ ImageView i1; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.picture_activity); FirebaseStorage storage = FirebaseStorage.getInstance(); StorageReference storageReference = storage.getReference(); i1 = (ImageView) findViewById(R.id.full_picture); Glide.with(this).using(new FirebaseImageLoader()).load(storageReference).into(i1); } } 

Gradle文件 –

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.google.firebase:firebase-storage:11.4.2' compile 'com.google.firebase:firebase-auth:11.4.2' compile 'com.firebaseui:firebase-ui-storage:3.0.0' compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:design:25.1.0' compile 'com.github.devlight.navigationtabstrip:navigationtabstrip:1.0.4' testCompile 'junit:junit:4.12' compile 'com.github.bumptech.glide:glide:3.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0' } apply plugin: 'com.google.gms.google-services' 

我收到一个错误:

错误

似乎使用Firebase UI 3.0.0,Firebase支持Glide 4.0并改变了使用Glide加载数据的方式。 根据Github的文件:

要从StorageReference加载图像,请首先在AppGlideModule中注册:

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

然后,您可以将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 )

如果您将Firabase UI降级到2.4.0,您的代码应该可以正常工作,但在这种情况下,您很可能会收到支持库的混合版本错误。

试试这种方式:

 storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(Uri uri) { imageURL = uri.toString(); Glide.with(getApplicationContext()).load(imageURL).into(i1); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Handle any errors } }); 

这样,您就可以获得存储中图像的URL,并将该URL加载到滑动中