Android:如何让onTouch像onClick一样工作?

Android:如何让onTouch像onClick一样工作?,android,map,touch-event,Android,Map,Touch Event,我使用本教程显示地图视图,并将onTouch事件设置为在单击特定区域时显示toast消息(纬度/经度)。现在我的问题是,即使要移动地图,我触摸屏幕时也会显示Toast消息?我只想在触碰点和触碰点相同的情况下显示土司。如何实现这一点?这是正确的方法吗?我很肯定有更好的办法 if (event.getAction() == 0) { touchX = (int) event.getX(); touchY = (int) event.getY(); }

我使用本教程显示地图视图,并将onTouch事件设置为在单击特定区域时显示toast消息(纬度/经度)。现在我的问题是,即使要移动地图,我触摸屏幕时也会显示Toast消息?我只想在触碰点和触碰点相同的情况下显示土司。如何实现这一点?

这是正确的方法吗?我很肯定有更好的办法

if (event.getAction() == 0) {                
    touchX = (int) event.getX();
    touchY = (int) event.getY();
}
if(event.getAction() == 1) {
  if(event.getX() == touchX && event.getY()== touchY){
    GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(), (int)event.getY());
       Toast.makeText(getBaseContext(), 
         p.getLatitudeE6() / 1E6 + "," + 
         p.getLongitudeE6() /1E6 , 
         Toast.LENGTH_SHORT).show();
    }
}

检查是否在中设置了移动位


这对我来说很有效,当我按下并拖动时,什么都不会发生,但如果我按下并释放它,它就起作用了!就像你的行为一样

  public boolean onTouch(View v, MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_UP){
         // yer Code here ...........
      }

      return false;
  }

否,
event.getAction()==0
不是正确的方法
event.getAction()
返回所有标志。您应该只检查一点。但由于某些原因,它不起作用:(我仍然在触摸屏上显示toast。您应该打印出所有事件及其标志,然后进行一些测试,查看根据用户输入生成的事件。然后决定过滤事件的策略。使用
(getAction()&MotionEvent.ACTION\u掩码)
只过滤出动作。打印出来(或记录)。结果意味着:0-向下、1-向上、2-移动、3-取消。这对我来说不起作用:(每当我松开手指时,它就会开火。即使我拖动了一下。
  public boolean onTouch(View v, MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_UP){
         // yer Code here ...........
      }

      return false;
  }