我创建了扩展LinerLayout的类并在视图上添加了许多元素,我也添加了一个圆圈 等canvas.drawCircle(100,100,10),当我实现onTouchEvent时,我不知道如何仅重绘该元素(圆圈)。在“Rect”中设置哪些参数,以便将其发送到invalidate(Rect)。
感谢。
答案 0 :(得分:2)
对于具体示例,我认为此代码示例可以满足您的需求。我将你的坐标移动到变量(cx,cy,r)只是为了清楚。根据您提到的内容,我认为您可以在LinearLayout子类中调用它。
int cx = 100;
int cy = 100;
int r = 10;
canvas.DrawCircle( cx, cy, r );
int l = cx - r - 1;
int t = cy - r - 1;
int r = cx + r + 1;
int b = cy + r + 1;
Rect bounds = new Rect(l, t, r, b);
invalidate(bounds);
我在所有侧面添加了一个额外的像素,只是为了重叠圆圈,以确保整个区域无效。根据我的经验,看起来您可以包含超出画布尺寸的负值或值。