我是android新手,我一直在尝试找出如何检索屏幕上连续触摸的坐标。例如,有 2 个变量 (x,y) 在手指移动时实时更新。我知道如何在触摸时找到它,但我真的不知道如何让它在手指移动时返回结果。
我一直在尝试 switch 语句,while/for 循环与 ACTION_MOVE 的不同组合。/ UP/ DOWN .. 仍然没有。
我在网站上发现了同样的问题,但答案只适合第一步(仅显示触摸的协调)我真的很感激这个问题的解决方案!谢谢!
我是android新手,我一直在尝试找出如何检索屏幕上连续触摸的坐标。例如,有 2 个变量 (x,y) 在手指移动时实时更新。我知道如何在触摸时找到它,但我真的不知道如何让它在手指移动时返回结果。
我一直在尝试 switch 语句,while/for 循环与 ACTION_MOVE 的不同组合。/ UP/ DOWN .. 仍然没有。
我在网站上发现了同样的问题,但答案只适合第一步(仅显示触摸的协调)我真的很感激这个问题的解决方案!谢谢!
在没有看到您的代码的情况下,我只是在猜测,但基本上如果您不返回true
第一次调用onTouchEvent
,您将看不到手势中的任何后续事件(MOVE、UP 等)。
也许那是你的问题?否则请放上代码示例。
@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;
}
});
}
您需要为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
}
}