說明如何監聽觸控事件及取得觸控點座標:

      實作 OnTouchListener 的 onTouch 方法,呼叫 onTouch方法時,會傳入兩個參數,v是觸發的元件,event是觸發的方式:

        private class myTouchListenter implements OnTouchListener{ 
              @Override
              public boolean onTouch(View v, MotionEvent event) {

                 // TODO Auto-generated method stub

                 return false;
              }
        }

      注意:預設是 "return false;",但這會造成一個結果,當使用者觸擊這個事件後,直到下一次觸擊之前都不會在呼叫 onTouch 方法;也就是說如果觸擊後沒有放開,中間就算有 move 或 up 的動作也不會偵測到,因此建議改為 "return true; ",即使觸擊後沒有放開,還是會持續呼叫 onTouch 方法。

      可以用 event.getAction() 取得觸發方式,event.getPointerCount() 可以取得同時觸擊點數目。


    觸控事件:

       MotionEcent.ACTION_DOWN - 代表觸擊

       MotionEcent.ACTION_MOVE - 代表持續觸擊且移動位置 

       MotionEcent.ACTION_UP - 代表觸擊結束


以下是程式碼示範:

Touch 

   ● 第5-7行:產生一個 stringBulider 物件,並使用 event.getPointerCount 方法得到同時有幾個觸控點數。

   ● 第8-11行:利用 for 迴圈列出所有觸控點的 Id 及所在的 X 、Y 軸,ID 就是觸控點根據傳入的順序所訂的 Index ,注意 X、Y 軸的資料型態是浮點數,%.1f 限定輸出範圍到小數點第一位。

   ● 第13-15行:判斷觸發事件是否為觸擊。

   ● 第16-18行:判斷觸發事件是否為觸擊且移動。 

   ● 第19-21行:判斷觸發事件是否為離開觸擊點。 

   ● 第23行:將得到的資料設定給 TextView 顯示。

   ● 第24行:return true 使觸發事件後,還是會繼續呼叫 onTouch。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 科技新鮮人 的頭像
    科技新鮮人

    新鮮人的部落格

    科技新鮮人 發表在 痞客邦 留言(0) 人氣()