2014-07-02 21 views
0

我想在一秒鐘內添加數組15次。我使用了Timer,Countdowntimer,處理程序,但不適用於Button Action.Down和Action.Move。任何幫助?Java Android:在一秒內添加數組15次如何?

ArrayList<Integer> Xpos; 
ArrayList<Integer> Ypos; 
ArrayList<String> MarkerSelected; 
private Handler handlerXYPos = new Handler(); 
Runnable runnableXYPos = null; 



case MotionEvent.ACTION_DOWN: 
handlerXYPos.post(runnableXYPos); 
break; 

case MotionEvent.ACTION_UP: 
handlerXYPos.removeCallbacks(runnableXYPos); 
break; 


//=== case drag 
case MotionEvent.ACTION_MOVE: 
handlerXYPos.post(runnableXYPos); 
break; 

這可運行的執行15frames

runnableXYPos = new Runnable() { 

       @Override 
       public void run() 
       { 

        Xpos.add(xP); 
        Ypos.add(yP); 
        MarkerSelected.add(MarkerName); 
        handlerXYPos.postDelayed(runnableXYPos, 66); //convert 15 in milisec = 66 


       } 
      }; 

,當我剛放下按下按鈕有時添加值的正確的量,但是當我拖動手指也增加了額外的價值此代碼的工作。

+0

在每個Motion事件案例中添加日誌,您將弄清楚它是如何工作的。 –

回答

2

當拖動下面的事情hapen

1) MotionEvent.ACTION_DOWN called once when you press to start drag 

2) MotionEvent.ACTION_MOVE is called several times depending on your drag 

3) MotionEvent.ACTION_UP: will get called once when you release to finish drag 

所以沒有必要寫裏面MotionEvent.ACTION_MOVE

代碼
2

我不知道塔爾它的解決方案,但儘量在行動中移動nothink做:

case MotionEvent.ACTION_MOVE:  
     // handlerXYPos.post(runnableXYPos);  
     break;  
+0

對,但是當我釋放按鈕時,ActionUp刪除這個處理程序。這節省了非常少的數據。 –

+0

不要在action_up中刪除回調。在需要時刪除回調中的回調。 –

+0

你能告訴我如何刪除回調? –

相關問題