0

我想使用该功能bitmapfactory.decodeFile(string pathname)

但是在使用它时,NULL正在被退回。请举例说明写入路径名的内容或方式。

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++;
}

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

4

1 回答 1

1

如果要使用文件名,则不能将它们放在可绘制文件夹中。您可以做到这一点的唯一方法是将图像放在资产文件夹中。如果您没有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 文件夹中的密度文件夹中进行选择。它按原样解码图像。屏幕密度和分辨率的任何进一步调整都必须由您完成。

从android中的资产文件夹打开文件

于 2013-06-27T17:50:58.753 回答