我创建了一个自定义视图,并尝试在其上绘制一个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对象?
答案 0 :(得分:1)
在您的第二个示例中,尝试将pixels[i] = 0xFF0000;
更改为pixels[i] = 0xFFFF0000;
您正在使用Alpha通道创建位图,因此您必须以AARRGGBB格式指定颜色才能正确解释它们。