第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

小淇哥初學(xué)者基礎(chǔ)教學(xué)之第一期——事件分發(fā)機(jī)制

標(biāo)簽:
Android

安卓开发当中,总有一些这种情况,为什么listview拖动没有效果,为什么按钮或者控件点击没有效果。为什么图片不能拉动等,这都是事件分发机制的问题;所以,事件分发机制的目的,就是为了处理各种事件,或者动作而产生的。


接下来,我将带大家一步一步解析这个流程:


在解析流程之前,先带大家,了解一下一些基本的动作:


我们平时操作手机,一般是由三个动作组成过程,按下,移动,抬起,在安卓中,这些动作,都是封装在类MotionEvent 中,可以获取到相应的动作操作;

在我们接下来要讲的各种方法中调用; 事件的分发处理,是分DOWN,MOVE,UP,三个过程分别去处理;举个例子:比如在一个ViewGroup中,就是DOWN的时候处理玩某个viewGroup的dispatchTouchEvent--onInterceptTouchEvent--onTouchEvent这整个流程,才会轮到MOVE动作。来重新处理整个流程,最后UP来处理整个流程;

事件分发事件的处理比较复杂,如果你能慢慢看文字或者找资料。也许也能看的懂,但是过段事件就可能又忘记了。所以,小淇哥我弄了一个图来给整个事件机制一个概述,让大家有一个大概的了解,然后再一步一步讲解:

5b9a104a000152c903790503.jpg

我们可以看到整个流程图。涉及到三个层,由上至下:activity---viewGroup---view层,这里的viewGroup可以是由多个的;

整个流程就是一个U型图,事件处理,先由左边的从上至下,再由右边的从下至上的处理过程:

另外:事件处理机制主要由dispatchTouchEvent--onTouchEvent两个过程,这个是基本过程。其中,在viewGroup中,还有一个事件拦截过程

onInterceptTouchEvent

重点详细解析:

1在activity层:这个层只有dispatchTouchEvent方法和onTouchEvent,若dispatchTouchEvent不进行事件分发了,就不会执行下面的onTouchEvent操作,而且,别的层也一样道理;


若你的点击没有碰到任何ViewGroup和View才会执行onTouch方法(当然,后面讲到下面的viewGroup和View返回为false,也会执行这个方法,这里可以先不管)


2若你的点击事件有三层的话,activity的dispatchTouchEvent返回True的时候,事件进行分发;

走到了viewGroup的流程,在viewGroup若进行onInterceptTouchEvent的返回为true的时候,就可以拦截到点击事件了。并且在viewGroup的onTouchEvent处理,后面View的就接收不到该事件了。


同理:只要是Down的拦截返回为true,后面的Move,和Up事件也不会经过onInterceptTouchEvent,拦截了一次。就不用拦截了。也就是不用经过该方法了;若ViewGroup没有进行拦截,就会返回到View的事件分发方法dispatchTouchEvent,和onTouchEvent方法;而这里要重点介绍的是一个U型过程的重下至上的,就是如果View的onTouchEvent没有被消费,就会返回false,就会轮到上一层的ViewGroup判断,是否需要消费;如果返回true,就会在该层进行消费掉,不进行上传。就是这个意思;5b9a104a00017fca06260307.jpg

这里是截图。你们可以拿我的demo去一个一个试试!




原文链接:http://www.apkbus.com/blog-880881-68322.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消