2014-03-28 59 views
0

我有一個onTouchEvent的問題,因爲它沒有給出正確的值。我正在製作一個簡單的程序來顯示在文本視圖中觸摸屏幕的次數。我也使用傳感器來增加textview的值。我能夠存儲和增加textview上的值,當我使用傳感器,但是當我嘗試onTouchEvent值增加兩倍。 該值存儲在nearCount中。 這是的onTouchEvent使用onTouchEvent獲取值的兩倍

public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 

    try { 
     if (nearCount > 0) { 

      tv.setText("" + nearCount++); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return super.onTouchEvent(event); 

} 

回答

1

使用TouchEvent工作fine..It會調用時間,因爲兩個一MotionEvent.ACTION_DOWN當你感動,MotionEvent.ACTION_UP觸摸被刪除

你需要檢查像thiswith MotionEvent.ACTION_DOWN

代碼
public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 

     try { 
      if (nearCount > 0) { 

       tv.setText("" + nearCount++); 

      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    return super.onTouchEvent(event); 

} 
1

您需要過濾的事件在的onTouchEvent:

public boolean onTouchEvent(MotionEvent event) { 
int eventaction = event.getAction(); 

switch (eventaction) { 
    case MotionEvent.ACTION_DOWN: 
     // finger touches the screen 
     break; 

    case MotionEvent.ACTION_MOVE: 
     // finger moves on the screen 
     break; 

    case MotionEvent.ACTION_UP: 
     // finger leaves the screen 
     break; 
} 

// tell the system that we handled the event and no further processing is required 
return true; 

} 
// see http://www.androidsnippets.com/handle-touch-events-ontouchevent 
2

你不能直接增加值,因爲它有兩種方法當你觸摸時MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP刪除觸摸。

所以基本上你必須在你的MotionEvent.ACTION_DOWN方法中調用它。

if (event.getAction() == MotionEvent.ACTION_DOWN) { 

    try { 
     if (nearCount > 0) { 

      tv.setText("" + nearCount++); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}