本文將講解Android中的事件分發處理
android
首先來關注三個方法:工具
public boolean dispatchTouchEvent(MotionEvent ev) 事件分發spa
public boolean onInterceptTouchEvent(MotionEvent ev) 事件攔截 code
public boolean onTouchEvent(MotionEvent ev) 事件響應orm
MotionEvent:包含的事件的詳細信息,例如觸摸點的信息,觸摸事件類型的信息等接口
重要方法:事件
(1)getRowX():觸摸點相對於屏幕的座標get
(2)getRowY():觸摸點相對於屏幕的座標it
注:getX()是表示Widget相對於自身左上角的x座標,而getRawX()是表示相對於屏幕左上角的x座標值(注意:這個屏幕左上角是手機屏幕左上角,無論activity是否有titleBar或是否全屏幕),getY(),getRawY()同樣的道理若是你的某個Activity中實現OnTouchListener接口,須要重寫io
onTouch(View view,MotionEvent event)
這個方法,
getRawX()和getRawY()得到的是相對屏幕的位置,getX()和getY()得到的永遠是view的觸摸位置座標
(這兩個值不會超過view的長度和寬度)。
手勢操做
關於手勢操做,這裏其實說的是Android提供的工具類,經過GestureDetector 類來識別和處理onTouch事件,簡化使用。
通常用到下面的三個類。
android.view.GestureDetector
手勢操做的識別類,經過他來使用下面的識別接口。
android.view.GestureDetector.SimpleOnGestureListener
手勢識別的接口類,使用他能夠按需重載本身想要的方法,方法多
android.view.GestureDetector.OnGestureListener;
手勢識別的類,SimpleOnGestureListener接口的父類。使用他須要實現他全部的方法。