java - 可自由拖动的 TextView - 精细控制

标签 java android textview

我有一个 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/

相关文章:

java - Android使电话号码可点击,自动检测

java - 为什么 editText 中的文本没有水平居中?

java - 如何在 Java 中为一行文本匹配多个 Regex 模式?

java - 如何初始化多个paintComponent?

java - 在android中执行蓝牙文件传输时出错

java - 将 ArrayList 项添加到新的 ArrayList 中并比较值

java - 如何重复textview?

Java 8 DateTimeFormatter 性能

java - 使用 -jdkinternals 时 jdeps 没有输出

java - ANR 中的小部件更新结果