我创建了扩展 LinerLayout 的类并在视图上添加了许多元素,还使用 etc canvas.drawCircle(100, 100, 10) 添加了圆,当我实现 onTouchEvent 时,我不确定如何仅重绘该元素(圆)。在“矩形”中设置哪些参数,以便我可以将其发送到无效(矩形)。
谢谢。
我创建了扩展 LinerLayout 的类并在视图上添加了许多元素,还使用 etc canvas.drawCircle(100, 100, 10) 添加了圆,当我实现 onTouchEvent 时,我不确定如何仅重绘该元素(圆)。在“矩形”中设置哪些参数,以便我可以将其发送到无效(矩形)。
谢谢。
对于具体示例,我认为此代码示例可以满足您的要求。我将您的坐标移动到变量(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);
我在所有边上添加了一个额外的像素,只是为了与圆圈重叠一点,以确保整个区域无效。根据我的经验,您似乎可以包含负值或超出画布尺寸的值。