[英]How to display or get an image from Firebase storage
I'm new to Android and I have a problem upon displaying an image from FirebaseStorage.我是 Android 新手,在显示来自 FirebaseStorage 的图像时遇到问题。
This is my code in MainActivity.java
:这是我在
MainActivity.java
代码:
ImageView image = (ImageView) findViewById(R.id.profilePic_image_view);
mStorage = FirebaseStorage.getInstance().getReference();
Uri downloadURI = mStorage.child("circleako.png").getDownloadUrl().getResult();
Picasso.with(MainActivity.this).load(downloadURI).fit().centerCrop().into(image);
Inside my gradle are these:在我的gradle里面是这些:
compile 'com.google.firebase:firebase-database:10.0.1' compile 'com.google.firebase:firebase-storage:9.6.1' compile 'com.google.android.gms:play-services-base:10.0.1' compile 'com.google.android.gms:play-services-maps:10.0.1' compile 'com.google.android.gms:play-services-location:10.0.1' compile 'com.google.android.gms:play-services-analytics:10.0.1' compile 'com.squareup.picasso:picasso:2.5.2' testCompile 'junit:junit:4.12'
This is the error:这是错误:
01-19 16:35:09.998 7334-7334/com.example.asuspc.timeclock E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.asuspc.timeclock, PID: 7334
java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object;
in class Lcom/google/android/gms/common/internal/zzac; or its super classes
(declaration of 'com.google.android.gms.common.internal.zzac' appears in
/data/data/com.example.asuspc.timeclock/files/instant-run/dex/slice-com.google.android.
gms-play-services-basement-10.0.1_a22c13f35fb245022b215534e2f1b995cc0c66d1-classes.dex)
at com.google.android.gms.internal.zzann.zzug(Unknown Source)
at com.google.android.gms.internal.zzann.zzuf(Unknown Source)
at com.google.firebase.storage.StorageReference.child(Unknown Source)
at com.example.asuspc.timeclock.MainActivity.onCreate(MainActivity.java:198)
at android.app.Activity.performCreate(Activity.java:6323)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
You can to use Glide.您可以使用 Glide。 With Glide you can show animated gifs too.
使用 Glide,您也可以显示动画 gif。
String urlImage = "You URL Image";
Glide.with(yourActivity.this)
.load(urlImage)
.into(yourImageView);
in gradle-app put:在 gradle-app 中输入:
compile 'com.github.bumptech.glide:glide:3.7.0'
Clean your project and do a full reinstall of the app on the device, it seems to be an issue with instant-run.清理您的项目并在设备上完全重新安装应用程序,这似乎是即时运行的问题。
Also, I'd recommend using Glide instead of Picasso with Firebase Storage (or cases where you load images from a URL).另外,我建议使用 Glide 而不是 Picasso 和 Firebase Storage(或从 URL 加载图像的情况)。 Picasso doesn't handle EXIF well, so in certain conditions it can cause issues such as orientation problems for images.
Picasso 不能很好地处理 EXIF,因此在某些情况下它可能会导致诸如图像方向问题之类的问题。
EDIT:编辑:
mStorage.child("circleako.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.with(MainActivity.this).load(uri).fit().centerCrop().into(image);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.