Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 簡述touch事件中的MotionEvent

Android 簡述touch事件中的MotionEvent

編輯:關於Android編程

有關touchEvent的事件裡都有一個 MotionEvent 參數,下面來簡單介紹一下它的屬性的一些含義和使用的方法

通常單指操作時,一般如下:

switch (event.getAction()) {//第一個觸摸點
	case MotionEvent.ACTION_DOWN:  //按下 = 0
		float x = event.getX();
		break;
	case MotionEvent.ACTION_MOVE:  //移動 = 2
			
		break;
	case MotionEvent.ACTION_UP:    // 抬起 = 1
			
	break;
}

多點觸摸時:

以下屬性在api level 5出現,api level 8過時。

MotionEvent.ACTION_POINTER_1_DOWN
MotionEvent.ACTION_POINTER_2_DOWN
MotionEvent.ACTION_POINTER_3_DOWN
MotionEvent.ACTION_POINTER_1_UP
MotionEvent.ACTION_POINTER_2_UP
MotionEvent.ACTION_POINTER_3_UP

api level 8 即2.2後起用:MotionEvent.ACTION_POINTER_DOWNMotionEvent.ACTION_POINTER_UP


通過以下測試發現,單點觸摸時,

switch (event.getAction()) {
//		case MotionEvent.ACTION_DOWN: //按下 = 0
//			System.out.println("onTouchEvent");
//			break;
//		case MotionEvent.ACTION_MOVE://移動 = 2
//			
//			break;
//		case MotionEvent.ACTION_UP:// 抬起 = 1
//			
//			break;
			
		case MotionEvent.ACTION_POINTER_DOWN://非第一個觸摸點按下  = 5
			System.out.println("ACTION_POINTER_DOWN");
			break;
			
		case MotionEvent.ACTION_POINTER_UP: //非第一個觸摸點抬起   = 6
			System.out.println("ACTION_POINTER_UP");
			break;
		default:
			break;
}
MotionEvent.ACTION_POINTER_DOWNMotionEvent.ACTION_POINTER_UP 未執行


第二個點以後取x、y坐標值

float x2 = event.getX(event.getActionIndex());//action index 從0開始到pointer count -1 結束
float y2 = event.getY(event.getActionIndex());//某個index的觸摸點的 相對於當前view的y坐標
event.getPointerCount(); //觸摸點的數量

多點時獲取坐標 索引 id 示例

		int pointerCount = event.getPointerCount();
//		switch (event.getAction() & MotionEvent.ACTION_MASK) {
		switch (event.getActionMasked()) {
		case MotionEvent.ACTION_DOWN:
		case MotionEvent.ACTION_POINTER_DOWN:
		case MotionEvent.ACTION_MOVE:
			for (int i = 0; i < pointerCount; i++) {
				int id = event.getPointerId(i); //同一點的id值保持不變
				int index = i;//同一點的索引值,是可變的,當由多指逐漸減少時,index--
				 dx = (int) event.getX(index);
				 dy  = (int) event.getY(index);
			}
			invalidate();
			break;
		case MotionEvent.ACTION_CANCEL:

		default:
			break;
		}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved