我想使用函数bitmapfactory.decodeFile(string pathname)
。
但在使用它时,正在返回NULL
。
请通过示例指定写PATHNAME的内容或方式。
for(int j=0;j<3;j++)
{
img_but[count].setImageBitmap(BitmapFactory.decodeFile("/LogoQuiz/res/drawable-hdpi/logo0.bmp"));
linear[i].addView(img_but[count]);
count++;
}
应该使用什么?而不是这样的路径名?
答案 0 :(得分:1)
如果要使用文件名,则不能将它们放在drawable文件夹中。您可以这样做的唯一方法是将图像放在assets文件夹中。如果您没有assets/
文件夹,则必须在主项目中创建一个文件夹。它应与您的gen/
,res/
和src/
文件夹位于同一分支。
您可以在资源文件夹中拥有所需的任何文件结构。例如,您可以将图像放在assets/images/
文件夹中。声音文件可以放在assets/sounds/
文件夹中。您可以像这样访问图像:
public Bitmap getBitmap(Context ctx, String pathNameRelativeToAssetsFolder) {
InputStream bitmapIs = null;
Bitmap bmp = null;
try {
bitmapIs = ctx.getAssets().open(pathNameRelativeToAssetsFolder);
bmp = BitmapFactory.decodeStream(bitmapIs);
} catch (IOException e) {
// Error reading the file
e.printStackTrace();
if(bmp != null) {
bmp.recycle();
bmp = null
}
} finally {
if(bitmapIs != null) {
bitmapIs.close();
}
}
return bmp;
}
变量名称建议的路径名应该相对于assets/
文件夹。因此,如果您将图像直接放在文件夹中,那么它只是imageName.png
。如果它在子文件夹中,那么它是subfolder/imageName.png
。
注意:Android不会从assets文件夹中的密度文件夹中进行选择。它按原样解码图像。屏幕密度和分辨率的任何进一步调整都必须由您完成。