我有一个 ID 为“tx”的 TextView。我设置了一个 OnTouchListener 以允许用户拖动 View 。
tx.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
float x = event.getRawX();
float y = event.getRawY();
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// Offsets center the TextView to the center of the MotionEvent
view.setX(x - view.getWidth() / 2);
view.setY(y - view.getHeight() / 2);
}
return true;
}
如何创建一种拖动效果,使用户最初单击的位置就是拖动开始的位置?我想要精细控制(与 Snapchat 或 Autodesk Sketch 相同),因此如果我决定从左侧拖动,则不会重新居中。我想这也是大多数用户对这种交互的期望。他们不希望将 TextView 重新定位在他们第一次单击的位置的中心。
非常感谢所有帮助!
最佳答案
MotionEvent.ACTION_DOWN
前面总是有 MotionEvent.ACTION_MOVE
您应该首先处理 MotionEvent.ACTION_DOWN
事件,该事件将为您提供用户第一次触摸的位置。您可以存储这些坐标,然后在 MotionEvent.ACTION_DOWN
中使用它们来执行您想做的任何操作。
关于java - 可自由拖动的 TextView - 精细控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33292365/