android触摸事件分发机制--锁屏部

android触摸事件分发机制--锁屏部

ID:30772869

大小:279.09 KB

页数:9页

时间:2019-01-03

android触摸事件分发机制--锁屏部_第1页
android触摸事件分发机制--锁屏部_第2页
android触摸事件分发机制--锁屏部_第3页
android触摸事件分发机制--锁屏部_第4页
android触摸事件分发机制--锁屏部_第5页
资源描述:

《android触摸事件分发机制--锁屏部》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一触摸事件涉及的类:触摸事件涉及到的两个重要主角就是ViewGroup和View,其中ViewGroup继承自View。所有的界面控件都是最终继承口ViewGroup或者View。二触摸事件涉及的方法说明:涉及的方法:dispatchTouchEvent、onTouchEvent>onlnterceptTouchEvent、onClickListeneronLongClickListener、onTouchListener。作用分别是:dispatchTouchEvent事件分发onlnterceptTouchEvent事件拦

2、截onTouchEvent事件处理。onClickListener点击事件onLongClickListener长按事件onTouchListener触摸事件监听View类里有两个方法dispatchTouchEvent,onTouchEventoViewGroup类里新增了onlnterceptTouchEvent力法。由于ViewGroup触摸事件可以分发给子view处理,如果不想让子view处理就可以拦截事件处理,但是view没有子view,所以处理事件吋不需要做拦截处理,所以就没有onlnterceptTouchEve

3、nt接口。它们之间的调丿IJ关系如何将在如下的源码分析中充分说明三触摸事件源码分析说明:—个Touch事件敲先到达的是根节点,即Acitivty的ViewGroup时,它会依次下发,所以我们需要从第一个收到触摸事件的控件ViewGroup来跟踪触摸事件的分发处理流程。対于上层应用來说触摸事件笫一入口是ViewGroup的dispatchTouchEvent:publicbooleandispatchTouchEvent(MotionEventev){/***对mFirstTouchTarget解释:是第一个找到的接收处理触摸事

4、件的子view,down的时候如果子view的dispatchTouchEvent返回true(—般子view不复写此方法,所以只要注册的onTouchLister接口或onTouchEvent方法返回true)mFirstTouchTarget就不是null。*如果了view的down-di件返[Elfalse那么mFirstTouchTarget就是null,Z后*move、up事件就不给子view/**/if(actionMasked==MotionEvent.>4CTIO/V_DOIV/V

5、

6、mFirstTouchTa

7、rget!=null){if(!disallowlntexcept){intercepted=onlnterceptTouchEvent(ev);}else{intercepted=false;}}else{//Therearenotouchtargetsandthisactionisnotaninitialdown//sothisviewgroupcontinuestointercepttouches.intercepted=true;}//如果自己的onlnterceptTouchEvent拦截返冋true或者down的时

8、候子view没有处理触摸件//就不在执行如下逻辑,即不在调用子view的触摸事件if(!canceled&&!intercepted){if(newTouchTarget==null&&childrenCount!=0){for(inti=childrenCount-1;i>=0;i--){//调用子view的触摸方法,如果子view接收触摸事件并处理(子view的dispatchTOuch或者onTouch返Idtrue)if(dispatchTransformedTouchEvent(ev,false,child.idBi

9、tsToAssign)){//Childwantstoreceivetouchwithinits//bounds,给mFirstTouchTarget赋值newTouchTarget=addTouchTarget(child,idBitsToAssign);alreadyDispatchedToNewTouchTarget=true;break;}}}}//Dispatchtotouchtargets.if(mFir^stTouchTa“EGt==null){//Notouchtargetssotreatthisasanord

10、inary//view.调用父view自己的touchhandied=dispatchTransformedTouchEvent(ev,canceled^null,TouchTarget.ALLPOINTERIDS);}else{//Dispatchtotouchtarget

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。