Ich weiß, die Lösung liegt vor, wenn die Leute sagen, dass das Bild-Caching mit Tools wie Glide oder Picasso, können Sie die Bilder angezeigt werden. Aber ich habe das gleiche versucht und es wird nicht funktionieren.Android Glide und Volley: Kann Bilder in Firebase Speicher
Hier ist meine Implementierung von
Dateien Firebase Speicher Hochladen wird gutif (uri != null) {
//upload to storage
StorageReference riversRef = imagesRef.child(uri.getLastPathSegment());
UploadTask uploadTask = riversRef.putFile(uri);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
Snackbar.make(coordinatorLayout, "Unable to process your request. Please try again.", Snackbar.LENGTH_SHORT).show();
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();
if (downloadUrl != null) {
Date date = new Date();
Locale locale = new Locale("en", "IN");
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy /h:mm a", locale);
String formattedDate = sdf.format(date);
HashMap<String, String> map = new HashMap<>();
map.put("isXRead", String.valueOf(false));
map.put("isYRead", String.valueOf(true));
map.put("imgUrl", String.valueOf(downloadUrl));
map.put("timestamp", formattedDate);
map.put("user", "X");
ref.push().setValue(map);
}
}
});
}
Das Bild hochgeladen und gibt die URL, ähnlich wie
https://firebasestorage.googleapis.com/v0/b/private.appspot.com/o/Messenger_images%2F14076?alt=media&token=2164ec58-55c2-4b03-b97a-ebfd36e66593
Hier ist, wie ich versuche, die angezeigt werden Bild mit Volley:
ImageRequest ir = new ImageRequest(message.getImgUrl(), new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
// callback
// new GlideOperations(context, img).glideMessenger(response);
img.setImageBitmap(response);
}
}, 100, 100, null, null);
//ir.setShouldCache(false);
AppController.getInstance().addToRequestQueue(ir);
Hier ist, wie ich versuche, das Bild mit anzuzeigen Glide:
try {
Glide.with(mContext)
.load(object)
.thumbnail(0.5f)
.override(900, 400)
.crossFade(100)
.fitCenter()
.error(R.drawable.wallpaper)
.into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
try {
mImageView.setImageDrawable(resource);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
Keine der oben scheint zu funktionieren. Schätze jede Hilfe.
Lösung Scheint, wie ich Problem mit dem ImageView
hatte ich wurde mit. Danke für Ihre Hilfe.
Ich habe ziemlich viel Erfahrung mit Picasso und Firebase Speicher, ich könnte helfen, wenn Sie bereit sind, Picasso einen anderen Versuch zu geben, lassen Sie es mich wissen. – RamithDR
Es tut mir leid, aber glide scheint viel effizienter zu sein – silverFoxA
Um ein in Firebase Storage gespeichertes Bild mit glide in ein imageView zu laden, verwende ich die Klasse 'FirebaseImageLoader' aus [die Antwort dieses Threads von Samuel] (https://groups.google.com/forum /? hl = de #! topic/firebase-talk/IrJACH038DI), es funktioniert perfekt und Sie müssen nicht die direkte öffentliche URL dieses Bildes – Wilik