在视图上同时应用 Fling 和 ACTION_MOVE

Apply both Fling and ACTION_MOVE on view

通过在 OnTouchListener.

中覆盖 onTouch 可以轻松应用运动事件
@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

MotionEvent.ACTION_MOVE 之后使用 GestureDectector 即可。

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);
}