我有一个奇怪的问题。我想在我的Android项目中使用我的res / drawable文件夹中的PNG文件,并在ImageButton中使用这样的PNG文件(其方法为“setImageBitmap(Bitmap bm)”)我需要解码PNG图像我有我的res / drawable文件。但是,当我复制路径并尝试解码它时:
public Bitmap getBitMap() {
return BitmapFactory.decodeFile("drawable/bishop00.png");
}
我看到一些线程说我也可以使用BitmapFactory的“decodeResources”方法,但是这段代码不在一个活动中,我不希望使用一个活动作为参数来使用该方法,看到因为这应该工作。我也尝试使用绝对路径(复制显示我的系统的整个层次结构的路径)但我仍然得到以下异常:
Unable to decode stream: java.io.FileNotFoundException
真的希望得到一些帮助,因为我完全确定该文件存在。
答案 0 :(得分:1)
我正在尝试在我的Android项目中使用res / drawable文件夹中的PNG文件
这是您的开发计算机上的文件。它不是Android设备上的文件。
认为这应该有效
不,它不应该。
我看到一些线程说我也可以使用BitmapFactory的“decodeResources”方法
这是正确的答案,假设这个内容首先应该是一个可绘制的资源。虽然使用decodeResource()
有一些正当理由,但它并不是常用的。可能还有其他方法可以使用更合适的可绘制资源,或者可能首先不应该是可绘制资源。
但此代码不在活动中
decodeResource()
需要Context
。它不一定是Activity
,但通常可能是候选人。您的所有代码都是以Context
开头的代码路径执行的;你应该没有问题在这里使用。