6

我是android新手,我一直在尝试找出如何检索屏幕上连续触摸的坐标。例如,有 2 个变量 (x,y) 在手指移动时实时更新。我知道如何在触摸时找到它,但我真的不知道如何让它在手指移动时返回结果。

我一直在尝试 switch 语句,while/for 循环与 ACTION_MOVE 的不同组合。/ UP/ DOWN .. 仍然没有。

我在网站上发现了同样的问题,但答案只适合第一步(仅显示触摸的协调)我真的很感激这个问题的解决方案!谢谢!

4

3 回答 3

12

在没有看到您的代码的情况下,我只是在猜测,但基本上如果您不返回true第一次调用onTouchEvent,您将看不到手势中的任何后续事件(MOVE、UP 等)。

也许那是你的问题?否则请放上代码示例。

于 2012-05-28T23:22:06.760 回答
10
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final TextView xCoord = (TextView) findViewById(R.id.textView1);
    final TextView yCoord = (TextView) findViewById(R.id.textView2);

    final View touchView = findViewById(R.id.textView3);
    touchView.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            final int action = event.getAction();
            switch (action & MotionEvent.ACTION_MASK) {

                case MotionEvent.ACTION_DOWN: {
                    xCoord.setText(String.valueOf((int) event.getX()));
                    yCoord.setText(String.valueOf((int) event.getY()));
                    break;
                }

                case MotionEvent.ACTION_MOVE:{
                    xCoord.setText(String.valueOf((int) event.getX()));
                    yCoord.setText(String.valueOf((int) event.getY()));
                    break;
                }
            }
            return true;

        }

    });
}
于 2012-05-29T12:43:02.803 回答
0

您需要为OnTouchListener要识别拖动的任何视图实现一个。

然后在OnTouchListener你需要显示X和Y坐标。我相信你可以通过MotionEvent.getRawX()MotionEvent.getRawY()

您可以使用该MotionEvent.getAction()方法找出拖动发生的时间。我相信常数是MotionEvent.ACTION_MOVE。这是一些伪代码:

添加 OnTouchListener 接口

public class XYZ extends Activity implements OnTouchListener

在 onCreate 方法中注册监听器

public void onCreate(Bundle savedInstanceState)
{
    //other code

    View onTouchView = findViewById(R.id.whatever_id);
    onTouchView.setOnTouchListener(this);
}

实现 onTouch 方法

public boolean onTouch(View view, MotionEvent event) 
{
    if(event.getAction() == MotionEvent.ACTION_MOVE)
    {
        float x = event.getRawX();
        float y = event.getRawY();
        //  Code to display x and y go here
        // you can print the x and y coordinate in a textView for exemple
    }
}
于 2012-05-29T00:13:56.013 回答