Android(x,y)连续触摸(拖动)坐标

时间:2012-05-28 23:16:38

标签: android touch coordinates

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

我一直在尝试使用switch语句,而/ for循环与ACTION_MOVE./ UP / DOWN ... .still没有任何组合。

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

3 个答案:

答案 0 :(得分:11)

没有看到你的代码我只是猜测,但基本上如果你没有将true返回给onTouchEvent的第一次调用,你将不会在手势中看到任何后续事件(移动,向上等)。

也许那是你的问题?否则请填写代码样本。

答案 1 :(得分:9)

@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;

        }

    });
}

答案 2 :(得分:1)

您需要为想要识别拖动的任何视图实现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
    }
}