我应该使用bitmapfactory.decodeFile(字符串路径名)的路径格式?

时间:2013-06-26 19:02:44

标签: android-resources android-drawable

我想使用函数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++;
}

应该使用什么?而不是这样的路径名?

1 个答案:

答案 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文件夹中的密度文件夹中进行选择。它按原样解码图像。屏幕密度和分辨率的任何进一步调整都必须由您完成。

Opening a File from assets folder in android