說明如何監聽觸控事件及取得觸控點座標:
實作 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 - 代表觸擊結束
以下是程式碼示範:
● 第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。
留言列表