我遇到了一个奇怪的问题。我正在尝试在 Android 项目中使用 res/drawable 文件夹中的 PNG 文件,并在 ImageButton 中使用这样的 PNG 文件(具有方法“setImageBitmap(Bitmap bm)”),我需要解码 PNG 图像我的 res/drawable 文件中有。但是,当我复制路径并尝试像这样解码它时:
public Bitmap getBitMap() {
return BitmapFactory.decodeFile("drawable/bishop00.png");
}
我看到一些线程说我也可以使用 BitmapFactory 的“decodeResources”方法,但是此代码不在 Activity 中,并且我不希望使用 Activity 作为参数来仅使用该方法,请参阅因为这应该有效。我也尝试过使用绝对路径(复制显示系统整个层次结构的路径),但仍然出现以下异常:
Unable to decode stream: java.io.FileNotFoundException
真的希望得到一些帮助,因为我完全确定该文件存在。
最佳答案
I am trying to use a PNG file from my res/drawable folder within my Android project
这是您的开发计算机上的一个文件。它不是 Android 设备上的文件。
seeing as this should work
不,不应该。
I saw some threads that said that I could also use the "decodeResources" method of BitmapFactory
这是正确的答案,假设该内容首先应该是可绘制资源。虽然使用 decodeResource()
有一些合理的理由,但总体来说它并不常用。可能还有其他更合适的使用可绘制资源的方法,或者这可能首先不应该是可绘制资源。
but this code is not in an activity
decodeResource()
采用 Context
。它不一定是Activity
,尽管它通常是一个可能的候选者。您的所有代码都沿着以 Context
开头的某个代码路径执行;在这里使用它应该没有问题。
关于java - 位图工厂抛出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604596/