【问题标题】:Loading images from application assets with Glide library使用 Glide 库从应用程序资源中加载图像
【发布时间】:2020-04-16 01:46:39
【问题描述】:

我已将我当前的项目从 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) 方法但没有成功,我没有看到加载方法采用例如我可以通过 AssetManager 类获得的 InputStream 或 FileDescriptor。

完全相同的代码在 Picasso 中运行。

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

【问题讨论】:

  • 我看到你已经打开了一个问题,谢谢
  • 是的,一旦解决,将在此处发布明确的答案。
  • 对于后代,在 Glide 3.4 之前不支持资产 Uris,此处引用的问题是 github.com/bumptech/glide/issues/155
  • @samajudd 这应该是一个答案。

标签: android android-glide


【解决方案1】:

适用于Glide.with(xxx).load(xxx).asBitmap()

正如GitHub issue I had opened at the time 中所述,我遇到了这个问题。

【讨论】:

    【解决方案2】:

    我更喜欢将图像放在原始目录而不是资产中,然后按如下方式构建 de 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 团队在 samples repository 中所做的工作。

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多