Android OnTouchListener导致不稳定的拖动
作者:互联网
我有一个按钮(在代码中变量theButton),并希望能够在其父视图中拖动它.
这是它的OnTouchListener:
OnTouchListener touchBListener = new View.OnTouchListener()
{
public float offsetX;
public float offsetY;
@Override
public boolean onTouch(View v, MotionEvent event)
{
int theAction = event.getAction();
switch (theAction)
{
case MotionEvent.ACTION_DOWN:
// Button down
offsetX = theButton.getX() - event.getX();
offsetY = theButton.getY() - event.getY();
break;
case MotionEvent.ACTION_MOVE:
// Button moved
float newX = event.getX() + offsetX;
float newY = event.getY() + offsetY;
v.setX(newX);
v.setY(newY);
break;
case MotionEvent.ACTION_UP:
// Button up
break;
default:
break;
}
return true;
}
};
theButton.setOnTouchListener(touchBListener);
当我拖动按钮时,它会在拖动的大致方向上移动,但它会在拖动之前的“当前”点和一个点之间来回跳跃.由于某种原因,当阻力向右上方移动时,跳跃会更大.
使用OnTouchListener是否可以“平滑”拖动,或者我是否需要使用OnDragListener?
解决方法:
我在另一篇文章中找到了答案 – 当我将event.getX()和event.getY()更改为event.getRawX()和event.getRawY()时,拖动是平滑的.
标签:android,ontouchlistener 来源: https://codeday.me/bug/20190825/1720182.html