如何通过代码访问“可绘制”文件

时间:2012-09-27 09:34:34

标签: android

public static Bitmap loadBitmap(Context context, String filename){
        AssetManager assets = context.getResources().getAssets();
        InputStream buf = null;
        try {
            buf = new BufferedInputStream((assets.open("drawable/black_circle.png")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bitmap = BitmapFactory.decodeStream(buf);
        return bitmap;
    }

当我使用上面的代码时,系统会出现以下错误

09-27 12:33:44.470: W/System.err(18554): java.io.FileNotFoundException: drawable/black_circle.png
09-27 12:33:44.470: W/System.err(18554):    at android.content.res.AssetManager.openAsset(Native Method)
09-27 12:33:44.470: W/System.err(18554):    at android.content.res.AssetManager.open(AssetManager.java:315)
09-27 12:33:44.470: W/System.err(18554):    at android.content.res.AssetManager.open(AssetManager.java:289)

我正在通过Eclipse在Samsung Galaxy上运行代码。如何使这项工作?

我需要动态更改文件名。

4 个答案:

答案 0 :(得分:2)

尝试这种方式:

int image_id = getResources().getIdentifier("imagename", "drawable", getPackageName());

image.setBackgroundResource(image_id);

答案 1 :(得分:1)

在drawable文件夹下打开图片:

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.black_circle);

答案 2 :(得分:0)

试试这个。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.addto);

如果你想从可绘制图像创建位图,那么你可以使用它。

答案 3 :(得分:0)

您可以尝试:

InputStream is = (InputStream) context.getResources().openRawResource(R.drawable.black_circle);