【发布时间】:2017-06-16 16:43:00
【问题描述】:
我正在尝试实现将图片从 firebase 存储连续下载到 android 应用程序中的 imageView 中。 到目前为止,我成功了,但结果或多或少很糟糕,因为更新图像会导致闪烁,即两个图像之间的空白图像。
我将最近的图片路径存储在节点“state/recentPicture”中的 Firebase 实时数据库中。每次更新时,我都会通过 ValueEventListener 在我的 android 应用程序中获取它,然后通过 glide 更新我的图像视图。图片的帧率为每秒 3 帧。 我的代码如下所示:
mFirebaseDatabase.child("state").child("recentPicture").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Picture Update:",dataSnapshot.toString());
String imgPath = dataSnapshot.getValue(String.class);
mStorageRef = FirebaseStorage.getInstance().getReference().child(imgPath);
Glide.with(getContext())
.using(new FirebaseImageLoader())
.load(mStorageRef)
.fitCenter()
.crossFade()
.into(mImageView);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
图片加载器类直接复制自firebaseUI的github页面: FirebaseImageLoader from FirebaseUI
我在想,在开始将它们放入我的图像视图的过程之前,我可能需要缓冲多个图像。
有没有更好的建议。从长远来看,我想通过静止图像“模拟视频流”。这些图像或多或少是实时图像。也许使用 firebase 数据库和 firebase 存储的整个方法是错误的。如果您有更好的建议,我会很高兴听到。
作为我想补充的附加信息,图像视图位于片段中。我也已经尝试省略交叉淡入淡出功能,也使用了 dontAnimate() 和 dontTransform(),但都没有任何改进。
【问题讨论】:
标签: android firebase android-glide