【问题标题】:Android: How to make onTouch work like onClick?Android:如何让 onTouch 像 onClick 一样工作?
【发布时间】:2010-11-04 08:54:40
【问题描述】:

我使用本教程http://mobiforge.com/developing/story/using-google-maps-android 来显示地图视图并设置 onTouch 事件以在我单击特定区域时显示吐司消息(纬度/经度)。现在我的问题是,即使是移动地图,触摸屏幕时也会显示 Toast 消息?我只想在触地点和触地点相同时才显示吐司。我该如何实现?

【问题讨论】:

    标签: android map touch-event


    【解决方案1】:

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

    if(event.getAction() & MotionEvent.ACTION_MOVE == MotionEvent.ACTION_MOVE)
    

    【讨论】:

    • 但由于某种原因,它不起作用:(我仍然可以在触摸时显示吐司。
    • 您应该打印出所有事件及其标志,然后进行一些测试以查看根据用户输入生成的事件。然后决定过滤事件的策略。
    • 使用(getAction() & MotionEvent.ACTION_MASK) 仅过滤掉动作。打印出来(或记录)。结果意味着:0 - 向下,1 - 向上,2 - 移动,3 - 取消。
    【解决方案2】:

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

    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();
        }
    }
    

    【讨论】:

    • 不,event.getAction() == 0 不是正确的方法。 event.getAction() 返回所有标志。你应该只检查一点。
    【解决方案3】:

    这对我有用,当我按下并拖动时没有任何反应,但是如果我按下并释放它就可以了!就像 onClickListener 行为一样。

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

    【讨论】:

    • 它对我有用 :( 每当我松开手指时它就会触发。即使我做了拖动。
    猜你喜欢
    • 2019-09-09
    • 2011-06-18
    • 1970-01-01
    • 2021-08-30
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多