2012-03-25 91 views
2

我想在我的視圖中對onTouchListener進行簡單的方向識別,但event.getHistorySize()返回0或有時但很少是1或2.一般來說,沒有歷史記錄,所以我可以不承認OnTouch歷史記錄大小始終爲0

ll3.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View arg0, MotionEvent arg1) { 
       if (arg1.getHistorySize() > 0) { 
        int prev = (int) arg1.getHistoricalY((arg1 
          .getHistorySize() - 1)); 
        if (arg1.getY() > prev) { 

有沒有人知道問題在哪裏?

+0

將您需要的歷史保存在某種隊列中,您可以通過'onTouch'獲取所需的所有歷史記錄。如果在此之前和之前的'onTouch'調用之間有多個觸發事件,歷史記錄纔會被填充。它並不打算包含所有的歷史記錄 – zapl 2012-03-25 18:24:56

+0

那麼你不需要一個手勢監聽器嗎?你需要自己處理這個歷史,或者使用這樣一個特殊的監聽器。檢查一些教程。 – Peterdk 2012-03-25 18:26:41

回答

1

您可能會這樣做,除非您有充分的理由來查看傳感器輸出的每個值。 (在幀之間輸出的值可能不那麼重要?)

ll3.setOnTouchListener(new OnTouchListener() { 
    @Override 
    int prevY=0; 
    public boolean onTouch(View arg0, MotionEvent arg1) { 
      if (arg1.getY() > prevY) { 
       // do stuff 
      } 
      prevY = arg1.getY();