【问题标题】:Looking for reasons why Bitmap.decodeResource using resourceId would return null寻找使用 resourceId 的 Bitmap.decodeResource 会返回 null 的原因
【发布时间】:2015-10-10 11:31:14
【问题描述】:

在我的 GridView 适配器中,我试图有效地加载图像,所以我一直在使用 Picasso 2.5.2(它允许通过资源 id 加载)。

Picasso.with(mContext)
                .load(resId)
                .noFade()
                .resize(newSize, newSize)
                .into(imageView);

但是,当我通过此消息传入 resourceId 时,它总是给出一个空白图像。

SkImageDecoder::Factory returned null

在查看 Picasso Github 页面之前,我想我会尝试使用 Framework 调用:

imageView.setImageBitmap(BitmapFactory.decodeResource(App.get().getResources(), resId));

App.get() 返回我的应用程序单例,因此 Context 是合法的。我还尝试在 getView 参数中从父级传递上下文并传递一个 Activity 上下文。记录 resId 向我显示了可绘制对象的正确 ID,但它仍然无法正常工作,但是这样可以:

imageView.setImageResource(resId);

...但这并不好,因为我没有机会通过加载较小尺寸的图像来保留内存。

我在 Genymotion 和真实设备上都进行了尝试,结果相同。

所以在 Logcat 中上下文和资源 id 都很好,这里还有什么问题?

【问题讨论】:

    标签: android bitmap drawable picasso skia


    【解决方案1】:

    Resource id是drawable的整数值。试试下面的代码获取resource id:

    int resId = resources.getIdentifier(
    productImageName, "drawable", context.getPackageName());
    

    您可以通过here了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 2020-09-18
      • 2011-07-25
      • 1970-01-01
      • 2020-05-27
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多