


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么利用View實(shí)現(xiàn)事件分發(fā)
Android中怎么利用View實(shí)現(xiàn)事件分發(fā),針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。三個方法publicbooleandispatchTouchEvent(MotionEventev)用于事件的分發(fā),返回結(jié)果受以下兩個方法的影響,表示是否消耗了事件。publicbooleanonInterceptTouchEvent(MotionEventev)事件是否被攔截,返回true表示攔截,false表示不攔截publicbooleanonTouchEvent(MotionEventev)表示事件是否被處理3.三個方法之間的關(guān)系public
boolean
dispatchTouchEvent(MotionEvent
ev){
boolean
result
=
false;
if(onInterceptTouchEvent(ev)){
result
=
onTouchEvent(ev);
}else{
result
=
child.dispatchTouchEvent(ev);
}
return
result;
}4.原理論述1.同一個事件序列是指從手指接觸屏幕開始到離開屏幕那一刻產(chǎn)生的一系列事件,其中以down開始,中間產(chǎn)生若干move事件,最后以up事件結(jié)束。2.同一個事件序列,只能被一個view攔截處理,如果它不消耗down事件,那么其他的事件也不會交給它處理,而且一旦它處理了down事件,以后的事件便不會調(diào)用onInterceptTouchEvent此方法判斷是否攔截,因?yàn)槎紩唤o它處理,就不用再詢問了。3.如果view不消耗除down以外的其他事件,那么這個點(diǎn)擊事件會消失,此時父元素的onTouchEvent并不會被調(diào)用,并且當(dāng)前view可以持續(xù)接收后續(xù)事件,最終這些消失的點(diǎn)擊事件將交由activity處理。4.ViewGrop默認(rèn)不攔截任何事件。5.VIew沒有onInterceptTouchEvent方法,一旦有點(diǎn)擊事件傳遞給它,那么它的onTouchEvent方法就會調(diào)用。6.View處于不可點(diǎn)擊狀態(tài)時(clickable和longClickable同時為false),onTouchEvent不會消耗事件。除此之外onTouchEvent默認(rèn)都是消耗事件返回為true的。7.View的enable屬性不影響onTouchEvent的默認(rèn)返回值8.事件的傳遞過程是由外向內(nèi)的,即事件都是先傳遞給父元素然后再分發(fā)給子元素。通過requestDisallowInterceptTouchEvent方法干預(yù)父元素的事件分發(fā)過程,但是ACTION_DOWN事件除外。9.view中的點(diǎn)擊事件優(yōu)先級,高-低:onTouchListener>onTouchEvent>onClickListener,當(dāng)onTouchListener中的onTouch方法返回false時,onTouchEvent才會調(diào)用5.個別源碼分析這是ViewGroup的dispatchTouchEvent中攔截事件的一段源碼,主要講述攔截過程的思路1.mFirstTouchTarget表示當(dāng)事件被ViewGroup的子元素成功處理時,會被賦值,所以一旦ViewGroup攔截事件,則mFirstTouchTarget==null,則返回true。2FLAG_DISALLOW_INTERCEPT此標(biāo)志位是有requestDisallowInterceptTouchEvent方法設(shè)置的,一般位于子view中,一旦此標(biāo)志位設(shè)置則不會執(zhí)行VIewGroup中的onInterceptTouchEvent方法,也就不會攔截除了ACTION_DOWN之外的方法,印證了論述2//
Check
for
interception.
final
boolean
intercepted;
if
(actionMasked
==
MotionEvent.ACTION_DOWN
||
mFirstTouchTarget
!=
null)
{
final
boolean
disallowIntercept
=
(mGroupFlags
&
FLAG_DISALLOW_INTERCEPT)
!=
0;
if
(!disallowIntercept)
{
intercepted
=
onInterceptTouchEvent(ev);
ev.setAction(action);
//
restore
action
in
case
it
was
changed
}
else
{
intercepted
=
false;
}
}
else
{
//
There
are
no
touch
targets
and
this
action
is
not
an
initial
down
//
so
this
view
group
continues
to
intercept
touches.
intercepted
=
true;
}
...
//
Check
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑項目合同范本:勘察與設(shè)計
- 山地旅游資源開發(fā)承包合同
- 鋼材采購合同樣本格式
- 餐飲服務(wù)與廚師雇傭合同范文
- 涂料供應(yīng)與采購合同范本
- 合同檔案寄存確認(rèn)書
- 貸款合同模板:個人貸款標(biāo)準(zhǔn)合同范本
- 銀行與公司短期貸款合同范例
- 氣動系統(tǒng)培訓(xùn)課件
- 海豚培訓(xùn)課件下載
- 小學(xué)數(shù)學(xué)五年級下冊必考《質(zhì)數(shù)和合數(shù)》練習(xí)題(附質(zhì)數(shù)合數(shù)知識點(diǎn))
- 地中海風(fēng)格室內(nèi)設(shè)計
- 臨床實(shí)習(xí)出科小結(jié)神經(jīng)外科
- 碳酸鈣市場分析及競爭策略分析報告
- 糖尿病性眼肌麻痹的護(hù)理查房
- 泡泡瑪特展廳活動策劃
- 健康生活方式與健康促進(jìn)的科學(xué)研究
- 文旅部門消防培訓(xùn)課件
- 中職語文課件:1.1《送瘟神》課件14張2023-2024學(xué)年中職語文職業(yè)模塊
- 胃瘍(消化性潰瘍)中醫(yī)護(hù)理方案
- 《哲學(xué)概論(第2版)》-課件全套 第0-6章 緒論、哲學(xué)的形態(tài)-馬克思主義哲學(xué)
評論
0/150
提交評論