使用Glide库从应用程序资产中加载图像

3

我已经将我的当前项目从Picasso切换到Glide。但是,我无法从应用程序资产中加载图像。这是否可能?

示例代码:

String assetPath = "file:///android_asset/flags/FR.jpg";
Glide.with(getContext())
            .load(Uri.parse(assetPath))
            .placeholder(missingFlagDrawable)
            .centerCrop()
            .crossFade()
            .into(flag);

我也尝试了使用load(String)方法,但没有成功。我没有看到一个可以使用InputStream或FileDescriptor的load方法,这些可以通过AssetManager类获得。

同样的代码在Picasso中是有效的。

Glide在应用程序的其他部分正常工作,并且可以很好地加载远程图像。


我看到你已经打开了一个问题,谢谢。 - peko
1
没错,一旦解决了,我会在这里发布最终答案。 - Vincent Mimoun-Prat
1
为了后代,Glide 3.4之前不支持资产URI,这里提到的问题是https://github.com/bumptech/glide/issues/155。 - Sam Judd
@samajudd 这应该是一个答案。 - TWiStErRob
2个回答

4

Glide.with(xxx).load(xxx).asBitmap() 一起使用

正如我当时在GitHub上开放的问题中所述,我遇到了这个问题。


0

我更喜欢将图片放在raw目录而非assets目录中,然后按以下方式构建URI:

fun setImageFromRaw(imageView: ImageView, rawId: Int) {
        val context = imageView.context
        val uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + context.packageName + "/" + rawId)
        GlideApp.with(context).load(uri).into(imageView)
    }

这个选项是基于 Glide 团队在 示例存储库 中所做的工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接