1

我有以下情况。我有一个视图组和两个视图(一个绘制矩形,另一个绘制椭圆形)。视图组和两个视图实现了 OnTouchListener 接口。但是当触摸视图时,Viewgroup.onTouch(..) 和 RectView.onTouch() 以及 OvalView.onTouch() 都会被调用。我的问题是..如果我想知道我需要做什么?可以给我一些信息或例子吗?

提前致谢,

4

2 回答 2

0

好吧,让我们看一下OnTouchListener

你会看到 onTouch(View, MotionEvent) 如果它已经消耗了事件,它会返回一个布尔值。因此,考虑到这一点,您可能需要做一些数学运算,看看您的 RectView 或 OvalView 是否包含触摸事件(使用 MotionEvent 获取 X、Y 坐标)。如果确实包含它,则返回 true 以表示该视图已使用触摸事件。

现在我不清楚每个 onTouch() 被调用的顺序,但我假设它首先调用子视图,如果该子视图返回 false,它将继续调用其余的 onTouch() 方法。

如果区分是否触摸 RectView 或 OvalView 很重要(例如,理论上可以同时触摸两者),您将不得不做一些额外的工作来查看您更喜欢接受哪一个(可能一个被绘制在顶部其他)。

于 2011-02-01T14:40:15.170 回答
0

您可以简单地获取接收到触摸事件的视图的 ID。

public boolean onTouch(View v, MotionEvent event) {
        v.getId();
}

您可以在 xml 中或使用 setId() 方法设置视图的 ID。

于 2011-02-28T22:41:56.830 回答