通过覆盖onTouch内部的OnTouchListener可以轻松应用运动事件。

@Override
public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:
            paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
            paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
            wm.updateViewLayout(view, paramsF);
            break;
    }
    return false;
}


但是要应用fling,我必须实现GestureDectector

public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}


如何同时实施fling和ACTION_MOVE

最佳答案

GestureDectector之后使用MotionEvent.ACTION_MOVE将使其起作用。

public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            initialX = paramsF.x;
            initialY = paramsF.y;
            initialTouchX = event.getRawX();
            initialTouchY = event.getRawY();
            break;
        case MotionEvent.ACTION_UP:
            break;
        case MotionEvent.ACTION_MOVE:
            paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
            paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
            mWindowManager.updateViewLayout(v, paramsF);
            break;
    }
    return gestureDetector.onTouchEvent(event);
}

关于android - 在 View 上应用Fling和ACTION_MOVE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33521175/

10-12 03:21