在ViewGroup中跟踪MotionEvent

时间:2011-07-17 04:23:23

标签: android view trace ontouchevent viewgroup

我有一个类ViewGroup,希望从中获取每个MotionEvent。到目前为止,我有这个:

class TestViewGroup extends ViewGroup {
     public TestViewGroup(Context context) {
         super(context);
     }

     @Override
     public boolean onTouchEvent(MotionEvent event) {
         Log.d("TestViewGroup", "X: " + (int)event.getX() + " Y: " + (int)event.getY());
         return true;
     }
 }

onTouchEvent(MotionEvent event)方法每次将手指放在屏幕上时都能捕获MotionEvent。但是,如果我的手指在我的手指仍然向下的同时在屏幕上移动手指,它将不会继续追踪我手指的坐标。我知道在扩展View的类中,可以在手指移动View时继续跟踪手指。我只是想知道如何将相同的想法应用到ViewGroup

2 个答案:

答案 0 :(得分:0)

我实现了一个非常简单的ViewGroup类并复制了你的代码,onTouchEvent运行良好

我做的唯一不同的是实现所有的构造函数,虽然一般来说我也会调用super来获取onTochEvent类似乎没有什么区别。

所以我想知道是否有任何代码/ xml你可能会有所作为呢?

捕获模拟器和设备上的所有触摸事件,除了构造函数之外,几乎和你的一样。

public class customViewGroup extends ViewGroup {

    public customViewGroup(Context context) {
        super(context,null,0);
   }

    public customViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs,0);

    }

    public customViewGroup(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.d("bThere", "X: " + (int)event.getX() + " Y: " + (int)event.getY());
        return true;//super.onTouchEvent(event);
    }

}

答案 1 :(得分:-1)

你应该添加viewGroup.setClickable(true);以确保视图可以获得更多的touchevent。