gpt4 book ai didi

android - 移动 Action 抽搐

转载 作者:行者123 更新时间:2023-11-30 03:50:43 25 4
gpt4 key购买 nike

我有一个 View,我希望它可以被拖动,所以我覆盖了它的 onTouchEvent(MotionEvent event) 方法,并且在移动事件中,我重新定位/翻译我的View 基于事件操作的 (x, y) 坐标。然而!将我的 View 向右拖动时 - 例如 - 我看到事件操作的 x 坐标没有稳定增加(即 ... 15、16、17、18...)但是而是交错(即 ... 15、23、16、24、17、25 ...),因此我的 View 以猛烈的方式移动。 (同样用于向左、向上、向下拖动等)

有谁知道为什么会这样,我该如何避免?!

这是我的onTouchEvent(..) 方法...

@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
// make note of the down action's (x, y) coordinate
action_down_x = event.getX();
action_down_y = event.getY();
return true;
case MotionEvent.ACTION_MOVE:
// work out displacement
dX = event.getX() - action_down_x;
dY = event.getY() - action_down_y;
// code here to move the view
return true;
case MotionEvent.ACTION_UP:
return true;
}

return super.onTouchEvent(event);
}

最佳答案

问题非常简单:您正在处理两个相对坐标。如果您从 View 中覆盖 onTouchEvent(),您可能会得到一个值 10,10。如果你现在移动手指,你会得到一个新值,比方说 9,9 所以你改变 View 的位置,这将导致你的手指再次位于 View 坐标系的 10,10。

我会做什么:覆盖父级的 onTouchEvent(),以便您保持在同一坐标系中。您的实现看起来不错,因此当您将代码移至父 View /Activity 时它应该可以轻松运行。

关于android - 移动 Action 抽搐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com