牛面对面5 - touch处理机制_第1页
牛面对面5 - touch处理机制_第2页
牛面对面5 - touch处理机制_第3页
牛面对面5 - touch处理机制_第4页
牛面对面5 - touch处理机制_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Touch事件处理MotionEventMetadataTouchLocationNumberofpointers(fingers)EventTimeCategoryACTION_DOWNACTION_UPACTION_MOVEACTION_POINTER_DOWNACTION_POINTER_UPACTION_CANCEL基本思路始于Activity.dispatchTouchEvent();自上而下树形遍历父View传递给子View父View可“截获”事件传递链每个Event必被处理处理顺序自下而上,直到有函数返回“true”未被View处理的函数会返回Activity.onTouchEvent()OnTouchListener可阻断事件传递链事件分发-1Activity.dispatchTouchEvent()事件分发的源头onTouchEvent()最后被调用有可能不被调用View.dispatchTouchEvent()如果存在首先发送至“listener”View.OnTouchListener.onTouch()onTouchEvent()不被响应时调用事件分发-2ViewGroup.dispatchTouchEvent()

onInterceptTouchEvent()判断是否需截获事件截获后,子View收到ACTION_CANCLE事件一旦截获,后续事件一律不再传递按照子View添加的逆序分发事件如没有子View响应,回调“listener”OnTouchListener.onTouch()如没有listner,或者事件未被处理:onTouchEvent()

示例-不响应事件DOWN:Activity.dispatchTouchEvent()

Activity.onTouchEvent()

MOVE/UP:Activity.dispatchTouchEvent()

Activity.onTouchEvent()View.dispatchTouchEvent()

View.onTouchEvent()

View.dispatchTouchEvent()

View.onTouchEvent()ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()

ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()

示例-响应单击DOWN:Activity.dispatchTouchEvent()

Activity.onTouchEvent()

MOVE/UP:Activity.dispatchTouchEvent()

Activity.onTouchEvent()View.dispatchTouchEvent()

View.onTouchEvent()View.dispatchTouchEvent()

View.onTouchEvent()ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()10

示例-事件截获DOWN:Activity.dispatchTouchEvent()

Activity.onTouchEvent()

MOVE/UP:Activity.dispatchTouchEvent()

Activity.onTouchEvent()View.dispatchTouchEvent()

View.onTouchEvent()

CANCEL!

View.dispatchTouchEvent()

View.onTouchEvent()ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()

ViewGroup.dispatchTouchEvent()

ViewGroup.onTouchEvent()自定义响应事件onTouchEventSetOnTouchListener处理事件ACTION_DOWN返回trueViewConfiguration常用方法getScaledTouchSlopgetScaledMinimumFlingVelocitygetLongPressTimeoutTips-1ACTION_DOWN尽量返回trueGesture探测事件传递链直接用dispatchTouchEvent()避免直接onTouchEvent()onInterceptTouchEvent()截获后,事件发往onTouchEvent()一旦截获,后续事件不再传入子View收到ACTION_CANCLE事件Tips-2重载时尽量调用父类函数View的状态改变依赖事件处理正确检测“手指移动”事件getScaledTouchSlop重视ACTION_CANCLE尽量避免打断正常的事件响应链多点处理MotionEvent.getPointerCount()ACTION_POINTER_DOWN&ACTION_POINTER_UPMotionEvent.getActionMasked()MotionEvent.getActionIndex()IndexgetX(index)/getY(index)getEventTime(index)GestureMotionEvent序列ACTION_DOWN。。。。。ACTION_UPGestureDetectoronDown(),onSingleTapUp(),onDoubleTap()onLongPress()onScroll()onFling()ScaleGestureDetectoronScaleBegin(),onScale(),onScaleEnd()Touch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论