媒介
2、onInterceptTouchEvent感化:拦截事宜,用来决定事宜是否传向子View
在android开辟中会经常碰到滑动冲突(比如ScrollView或是SliddingMenu与ListView的嵌套)的问题,须要我们深刻的懂得android事宜响应机制才能解决,事宜响应机制已经是android开辟者必弗成少的常识。面试找工作的时刻也是面试官经常会问的一个问题。
涉及到事宜响应的常用办法构成
用户在手指与屏幕接触过程中经由过程MotionEvent对象产生一系列事宜,它有四种状况:
- MotionEvent.ACTION_DOWN:手指按下屏幕的刹时(一切事宜的开端)
- MotionEvent.ACTION_MOVE:手指在屏幕上移动
- MotionEvent.ACTION_UP:手指分开屏幕刹时
- MotionEvent.ACTION_CANCEL :撤消手势,一般由法度榜样产生,不会由用户产生
Android中的事宜onClick,>
View源码分析
Android中ImageView、textView、Button等持续于View但没有重写的dispatchTouchEvent办法,所以都用的View的该办法进行事宜分发。
看View重要函数部分源码:
- public boolean dispatchTouchEvent(MotionEvent event) {
- //返回true,表示该View内部消化掉落了所有事宜。返回false,表示View内部只处理了ACTION_DOWN事宜,事宜持续传递,向上级View(ViewGroup)传递。
- if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
- mOnTouchListener.onTouch(this, event)) {
- //此处的onTouch方法就是回调的我们注册OnTouchListener时重写的onTouch()办法
- return true;
- } return onTouchEvent(event);
- }
起首进行三个前提的断定:
(2)控件是否Enable;(控件默认都是enable的)
(3)button琅绫擎实现的OnTouchListener监听里的onTouch()办法是否返回true;
如不雅前提都知足,则该事宜被消费掉落,不再进入onTouchEvent中处理。不然将事宜将交给onTouchEvent办法处理。
- public boolean performClick() {
- ...
- // if (li != null && li.mOnClickListener != null) {
- ...
- li.mOnClickListener.onClick(this);
- return true;
- }
- return false;
- }
- public void setOnClickListener(OnClickListener l) { if (!isClickable()) {
- setClickable(true);
推荐阅读
AgentWeb是基于Android WebView一个功能完善小型浏览器库
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! Android 端AgentWeb 介绍AgentWeb是一个高度封装的 Android WebView ,简单易用 , 带有进度条 、 支撑文>>>详细阅读
地址:http://www.17bianji.com/lsqh/36325.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示