使用 onTouchListener 查看手指不移动

View not moving with finger with onTouchListener

我正在尝试使 View 的 x 值随着手指在屏幕上的拖动而移动。虽然视图移动很流畅,但它只移动了手指移动距离的 ~1/3。 View 在我的例子中恰好是 RecyclerView,但我认为这与问题无关。我在以下实现中做错了什么?

view.setOnTouchListener((v, event) -> {
        switch (event.getActionMasked()) {
            case MotionEvent.ACTION_UP:
                view.animate().translationX(0).setDuration(200);
                break;
            case MotionEvent.ACTION_MOVE:
                if (event.getHistorySize() < 1) break;
                final float latestX = event.getX(),
                        secondLatestX = event.getHistoricalX(event.getHistorySize() - 1),
                        firstX = event.getHistoricalX(0),
                        secondX = (event.getHistorySize() > 1) ?
                                event.getHistoricalX(1) : latestX;
                final float firstY = event.getHistoricalY(0),
                        secondY = (event.getHistorySize() > 1) ?
                                event.getHistoricalY(1) : event.getY();
                // if initial change x is greater than y
                if (Math.abs(secondX - firstX) > Math.abs(secondY - firstY)) {
                    view.setX(messageList.getX() + (latestX - secondLatestX));
                    return true;
                }
                break;
        }
        return false;
    });

如果代码需要一些解释:

我计算的变量不正确吗?我似乎找不到任何逻辑问题。

因为我找不到任何方法来做到这一点,所以我决定从头开始创建我自己的库。这是:

https://github.com/GregoryConrad/SlideDetector

根据您的用例,我可以理解的是您想根据您的触摸移动视图。

查看我的项目长按并在无限视图中移动正方形。

ZoomIt