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