这是onDraw()
我的自定义视图的方法:
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setColor(Color.RED);
Bitmap bmp = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.drawARGB(255, 255, 0, 0);
c.drawText("Text", 50, 50, p);
canvas = c;
canvas.drawARGB(255, 0, 0, 255);
canvas.drawText("Text1", 20, 20, p);
// canvas = c;
}
上述方法的结果是一个没有颜色或任何文本的视图。但是如果我先评论canvas = c
并取消评论最新(在块中的最后一行)结果将是一个蓝色视图,其中“text1”出现在正确的位置。看起来像这个覆盖的结果onDraw()
:
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setColor(Color.RED);
canvas.drawARGB(255, 0, 0, 255);
canvas.drawText("Text1", 20, 20, p);
}
为什么引用自定义视图的画布可以改变结果?而且在第一次覆盖时,为什么视图显示没有颜色并且没有显示为红色?
编辑:
假设 c1,c2 是类 C 的实例,它们是单独创建的。现在如果我们这样做:
c1 = c2;
那么 c1 的所有属性都将等于 c2 的属性。现在我的问题是:
- 为什么我们使用
canvas = c
的时候canvas的properties不等于c?(自定义view没有颜色和文字,虽然c是红色有文字) - 第一个和第二个有什么不同
canvas = c
?正如我所说,结果不同。