Android:无法在View上绘制Bitmap对象

时间:2011-08-28 03:55:00

标签: java android

我创建了一个自定义视图,并尝试在其上绘制一个int(颜色)数组。

这会画一个红色的屏幕:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int width = canvas.getWidth();
    int height = canvas.getHeight();

    int[] pixels = new int[width*height];
    for(int i=0; i<pixels.length; i++) {
        pixels[i] = 0xFF0000;
    }

    canvas.drawBitmap(pixels, 0, width, 0,0,width,height,false,null);
}

这不是:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int width = canvas.getWidth();
    int height = canvas.getHeight();

    int[] pixels = new int[width*height];
    for(int i=0; i<pixels.length; i++) {
        pixels[i] = 0xFF0000;
    }

    Bitmap bmp = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888);
    canvas.drawBitmap(bmp, 0, 0, null);
}

区别在于最后一行。第二种做事方式有什么问题?我是否以某种方式错误地创建了Bitmap对象?

1 个答案:

答案 0 :(得分:1)

在您的第二个示例中,尝试将pixels[i] = 0xFF0000;更改为pixels[i] = 0xFFFF0000;您正在使用Alpha通道创建位图,因此您必须以AARRGGBB格式指定颜色才能正确解释它们。