我是android的新手,我一直试着找出如何在屏幕上检索连续触摸的坐标。例如,有2个vars(x,y),当手指四处移动时,它们会实时更新。我知道如何在触摸时找到它,但我真的不知道如何让它在手指移动之后返回结果。
我一直在尝试使用switch语句,而/ for循环与ACTION_MOVE./ UP / DOWN ... .still没有任何组合。
我在网站上发现了同样的问题,但答案只适合第一步(仅显示触摸时的协调) 我真的很感激这个解决方案!谢谢!
答案 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
}
}