寻找使用resourceId的Bitmap.decodeResource将返回null的原因

时间:2015-10-10 11:31:14

标签: android bitmap drawable picasso skia

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

SkImageDecoder::Factory returned null

但是,当我使用此消息传入resourceId时,它总是会显示一个空白图像。

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

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

imageView.setImageResource(resId);

App.get()返回我的app单例,因此Context是合法的。我也尝试在getView params中传递来自父节点的上下文并传入Activity Context。记录resId会向我显示drawable的正确ID,但它仍然不起作用,但是这有效:

if(spr.getBoundingRectangles.contain(x,y)){
    //do this
}

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

我已经尝试过Genymotion和具有相同结果的真实设备。

因此,在Logcat中,上下文和资源ID都很好,这里还有什么问题呢?

1 个答案:

答案 0 :(得分:0)

资源ID是drawable的整数值。请尝试以下代码获取 资源ID:

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

您可以从here了解详情。