2012-11-25 41 views
2

我目前正在開發自己的基本繪圖應用程序。到目前爲止,我的應用程序運行良好,但我注意到我的運動事件似乎並沒有得到所有被觸摸的X軸和Y軸點。從android中的運動事件獲取所有x和y座標

當我在屏幕上移動手指時,圓圈之間有明顯的空隙。只有當我慢慢地移動手指時,它才能捕捉到所有的點。有沒有辦法我可以抓住所有的點,或者有什麼辦法可以優化它來處理所有點?

這裏是我如何做它:

setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 

       int x; 
      int y;  

      switch (event.getAction()) 
      { 
       case MotionEvent.ACTION_DOWN: 
       { 
        x = (int) event.getX(); 
        y = (int) event.getY(); 
        //method draws circle at x and y coordinate 
        MyPainter mp = new MyPainter(x,y); 

        break; 
       } 
       case MotionEvent.ACTION_MOVE: 
       { 
        x = (int) event.getX(); 
        y = (int) event.getY(); 
       MyPainter mp = new MyPainter(x,y); 

        break; 
       } 
      } 
      return true; 

     } 
    }); 

任何建議或意見讚賞。謝謝

回答

2

這只是硬件設計的方式。硬件每秒對觸摸屏進行N次採樣,並在每次感測到手指時吐出座標。

如果移動比屏幕樣品更快,你就必須在報告的數據差距。只有你可以做的是通過插入兩條觸摸之間的界線來自己生成缺失的點。

+1

我在看表面圖..顯然它的快速繪圖。這會解決我的問題嗎? – user818502

1

接受的答案是並不完全正確,可以使用下面的方法來訪問從graps觸摸數據:

event.getHistorySize(); // returns the number of data points stored as an int 
event.getHistoricalX(int); 
event.getHistoricalX(int); 

其他相關的方法是,當有多個可用的指針(見documentation) 。

這可以如何在實踐中使用的一個很好的例子可以發現here