使用可从资源绘制的位图初始化Bitmap变量不起作用 - 使用ANDROID

时间:2012-08-09 19:45:47

标签: java android bitmap android-canvas android-resources

我使用以下代码初始化我的位图变量:

Bitmap bitmap = ((BitmapDrawable)this.model.gameView.context.getResources().getDrawable(R.drawable.pic1)).getBitmap();

当我尝试记录该位图的宽度时,日志甚至不输出该调用的任何内容。

我知道它已经到了那条线,因为我跟踪了代码。

另外,当我尝试使用canvas.draw作为位图时,屏幕上没有任何内容。

我用矩形绘制的一切都很好。

我的图片资源是PNG。

感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

为你的位图类试试这样的东西。

public class DrawBitmap extends View
{
    Bitmap bitmap;

    public DrawBitmap(Context content)
    {
        super(content);

        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawColor(Color.BLACK);//whatever color you want, make sure it's not the same as your image
        canvas.drawBitmap(bitmap, (canvas.getWidth()), 0, null);
    }
}

主类

public class Main extends Activity 
{

    DrawBitmap myView;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myView = new DrawBitmap(this);
        setContentView(myView);
    }
}

答案 1 :(得分:1)

尝试使用BitmapFactory.decodeResource 看看这个主题的答案: How to convert a Drawable to a Bitmap?

答案 2 :(得分:0)

刚想通了。它与我使用的位图加载方法无关。 这是我的逻辑错误。我的代码意外地遇到了我的位图变为null的情况,并且它试图在画布上绘制空资源。