2011-02-01 80 views
1

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

由于提前,

回答

0

好吧,让我们来看看OnTouchListener

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

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

如果区分是否触摸了RectView或OvalView(例如理论上可以同时触摸两者),那么必须进行一些附加工作以确定哪一个更喜欢接受(也许一个是绘制的在另一个之上)。

+0

哦,我看到..谢谢.. – Blackbelt 2011-02-01 14:54:14

0

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

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

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

相关问题