針對螢幕上的乙個view元件,android是如何區分應當觸發ontouch事件還是onclick事件?在android中,一次使用者操作可以被不同的view元件按次序分別處理,並將完全響應了使用者的一次ui操作稱之為消耗了該事件(consume),那麼android是按什麼次序將事件傳遞的,又在什麼情況下判定為消耗了該事件?下面通過一段具體的**進行說明。
在這段**中,先為按鈕新增單擊事件***,並通過log.i()方法輸出onclick(單擊事件)。然後為按鈕新增觸控事件,通過判斷方式輸出當前手指是按下還是抬起。具體**如下:
01 button button = (button) findviewbyid(r.id.btn); //獲得按鈕物件
02 //為按鈕新增單擊事件***
03 button.setonclicklistener(new view.onclicklistener()
08 });
09 //為按鈕新增觸控事件***
10 button.setontouchlistener(new view.ontouchlistener() else if (event.getaction() == motionevent.action_up)
18 return false; //表示未消耗掉這個事件
19 }
20 });
執行上面的**後,單擊螢幕中的按鈕,將會在logcat面板中看到如圖7.11所示的結果。
說明:為乙個元件同時設定單擊事件與觸控事件時,觸控事件首先被執行然後執行單擊事件。當觸控事件***返回值為ture時,說明消耗掉了這個事件,將不再執行單擊事件。
觸控事件之事件傳遞
uiview是如何判定這個事件是否是自己應該處理的呢?hittest withevent 方法的處理流程如下 呼叫當前view的pointinside withevent 方法來判定觸控點是否在當前view內部,如果返回no,則hittest withevent 返回nil 如果返回yes,則向當前...
JS 觸控事件 手勢事件
隨著觸屏移動端裝置的普及使用,w3c開始制定touchevent規範。除了常用的dom屬性,觸控事件還包含下列三個用於跟蹤觸控的屬性。觸控事件與手勢事件之間的關係 1 當乙個手指放在螢幕上時,會觸發touchstart事件,如果另乙個手指又放在了螢幕上,則會觸發gesturestart事件,隨後觸發...
JavaScript觸控與手勢事件
ios版safari為了向開發人員傳達一些特殊資訊,新增了一些專有事件。因為ios裝置既沒有滑鼠也沒有鍵盤,所以在為移動safari開發互動網頁時,常規的滑鼠和鍵盤事件根本不夠用。隨著android中的webkit的加入,很多這樣的專有事件變成了事實標準。包含ios2.0軟體的iphone 3g發布...