Android如何在常规时间间隔内捕获触摸点位置

时间:2015-02-25 06:38:02

标签: android input timer touch

如果触摸均匀触发,如何在常规时间间隔内捕捉触摸点位置。即触发事件触发后触发时间间隔,触摸事件终止时触发时间间隔。

现在我已经编写了代码来通过引用android开发者文档来捕获触摸点。请建议如何修改代码以在规定时间间隔内捕获触摸位置。

public boolean onTouchEvent(MotionEvent event) {

// get pointer index from the event object
int pointerIndex = event.getActionIndex();

// get pointer ID
int pointerId = event.getPointerId(pointerIndex);

// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();

switch (maskedAction) {

    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_POINTER_DOWN:
        {
            // We have a new pointer. Lets add it to the list of pointers
            PointF f = new PointF();
            f.x = event.getX(pointerIndex);
            f.y = event.getY(pointerIndex);
            // Do something
            break;
        }
    case MotionEvent.ACTION_MOVE:
        { // a pointer was moved
            for (int size = event.getPointerCount(), i = 0; i < size; i++) {
                PointF f = new PointF();
                f.x = event.getX(pointerIndex);
                f.y = event.getY(pointerIndex);
                // Do something
            }
            break;
        }
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_POINTER_UP:
    case MotionEvent.ACTION_CANCEL:{
       // trigger to stop the time interval 
    }
}
return true;
}

2 个答案:

答案 0 :(得分:0)

我的猜测是你要在ACTION_POINTER_DOWN触发时检查当前时间(系统或类似Joda Time),并将其存储为按下的时间值。在ACTION_MOVE上,如果当前时间按下时间==时间间隔,请记下该点。此时将按下的时间var重新初始化为当前时间并重复。

答案 1 :(得分:0)

实现TimerTask&amp;当计时器任务满足特定时间时设置标志,如

        timer = new Timer();
        if (timer != null) {
            timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {

                 grabThePosition=true;

                }
            }, 0, samplingInterval);
        }

onTouchEvent中查看旗帜&amp;得到x,y位置然后重置标志。