首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >滑动不从StorageReference加载图像

滑动不从StorageReference加载图像
EN

Stack Overflow用户
提问于 2019-05-28 11:02:09
回答 4查看 2K关注 0票数 2

当使用Glide4.9.0(最新的)将图像从StorageReference加载到ImageView时,我遇到了问题。

卡在PlaceHolder上了。当我试着把我的裁判的可下载网址放进去的时候,它就起作用了..

代码语言:javascript
运行
复制
StorageReference ref = FirebaseStorage.getInstance().getReference().child("myImage")

//It's not working
Glide.with(mContext)
   .load(ref)
   .placeholder(R.drawable.ic_loading_circle)
   .error(R.drawable.ic_loading_circle)
   .into(mImageView);

//It's working
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
{
    @Override
    public void onSuccess(Uri downloadUrl)
    {
        Glide.with(mContext)
            .load(downloadUrl.toString())
            .placeholder(R.drawable.ic_loading_circle)
            .error(R.drawable.ic_loading_circle)
            .into(mImageView);
    }
});

我没有看到任何错误使用尝试-捕捉,我已经把互联网的许可在Manifest.其他来自绘图的图像也在工作。

注意:我的防火墙是由2个应用程序使用,第一个应用程序没有任何问题的幻灯片,但这第二个应用程序有未知的问题。

有什么解决办法或替代办法吗?因为使用getDownloadUrl().addOnSuccessListener获取URI非常慢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-05-28 14:53:03

为您工作的解决方案是正确的解决方案。我也是这么做的。

代码语言:javascript
运行
复制
profileListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String imageUrl = dataSnapshot.getValue(String.class);

            if (ProfileFragment.this.getActivity() != null)
                Glide.with(ProfileFragment.this.getActivity())
                        .load(imageUrl)
                        .placeholder(R.drawable.default_image)
                        .circleCrop()
                        .into(photoPhoto);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };

如果您发现这件事进展缓慢,只需在firebase中启用脱机持久性即可。

代码语言:javascript
运行
复制
FirebaseDatabase.getInstance().setPersistenceEnabled(true);

在应用程序打开时调用任何FirebaseDatabase实例之前。

Firebase非常有效地管理同步。

注意:当您在开发应用程序期间发现任何随机异常调用快照时,请尝试清除应用程序的数据或重新安装。

我干得很好!

票数 1
EN

Stack Overflow用户

发布于 2019-05-28 21:49:58

我不认为Glide支持StorageReference --这是不同的协议,但是您可以使用支持这个协议的FirebaseUI,也可以使用场景Glide库后面的FirebaseUI。

FirebaseUI

票数 0
EN

Stack Overflow用户

发布于 2019-09-27 07:35:55

上面的答案对我没有用。

在Glide 4.8.0中,这是对我有用的东西:

  1. 首先,确保您的应用程序build.gradle中有以下内容 implementation 'com.firebaseui:firebase-ui-storage:3.2.2' implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

2.然后使用以下代码从存储引用加载映像

代码语言:javascript
运行
复制
    DrawableCrossFadeFactory factory =
            new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();

    RequestOptions options =
            new RequestOptions()
                    .centerCrop()
                    .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
                    .placeholder(R.drawable.your_progress_animation)
                    .error(R.drawable.ic_your_on_error_image);

    // Download directly from StorageReference using Glide
    // (See MyAppGlideModule for Loader registration)
    Glide.with(getAppContext())
            .load(item.reference)
            .transition(withCrossFade(factory))
            .apply(options)
            .into(holder.signatureImageView);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56340764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档