有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:无法在视图上绘制位图对象

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

这将绘制一个红色屏幕:

@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);
}

区别在于最后几行。第二种做事方式有什么问题?我是否创建位图对象时出错了


共 (1) 个答案

  1. # 1 楼答案

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