Shi Jian Fen Fa Ji Zhi Xiang Jie
Zai Shang Yi Pian Wen Zhang Shi Jian Fen Fa Ji Zhi Yuan Li Zhong Jian Yao Fen Xi Liao Yi Xia Shi Jian Fen Fa Ji Zhi De Yuan Li ,Yuan Li Shi Shi Fen Jian Dan De ,Yi Ju Hua Jiu Neng Zong Jie :Ze Ren Lian Mo Shi ,Shi Jian Ceng Ceng Chuan Di ,Zhi Dao Bei Xiao Fei . Sui Ran Yuan Li Jian Dan ,Dan Shi Sui Zhao Android Bu Duan De Fa Zhan ,Shi Ji Yun Yong Chang Jing Ye Yue Lai Yue Fu Za ,Suo Yi Xiang Yao Che Di Wan Zhuan Shi Jian Fen Fa Ji Zhi Huan Xu Yao Yi Ding Ji Qiao ,Ben Pian Shi Jian Fen Fa Ji Zhi Xiang Jie Jiang Dai Da Jia Liao Jie ...
Ni Yi Wei Wo Jie Xia Lai Yao Jiang Yuan Ma ?
Wo Jiu Bu An Tao Lu ,Suo You De Yuan Ma Du Shi Wei Liao Gua Ying Ju Ti De Ying Yong Chang Jing Er Xie De ,Zhi Yao Neng Gou Li Jie Yun Yong Chang Jing ,Li Jie Yuan Ma Ye Jiu Shi Fen Jian Dan Liao . Suo Yi Ben Pian De He Xin Wen Ti Shi :Zheng Que Li Jie Zai Shi Ji Chang Jing Zhong Shi Jian Fen Fa Ji Zhi De Zuo Yong . Hui She Ji Dao Yuan Ma ,Dan Bu Shi Zhu Jiao .
Zhu Yi :Ben Wen Zhong Suo You Yuan Ma Fen Xi Bu Fen Jun Ji Yu API23(Android 6.0) Ban Ben ,You Yu An Zhuo Xi Tong Yuan Ma Gai Bian Hen Duo ,Ke Neng Yu Zhi Qian Ban Ben You Suo Bu Tong ,Dan Ji Ben Liu Cheng Du Shi Yi Zhi De .
Chang Jian Shi Jian
Ji Ran Shi Shi Jian Fen Fa ,Zong Yao You Shi Jian Cai Neng Fen Fa Ba ,Suo Yi Wo Men Xian Liao Jie Yi Xia Chang Jian De Ji Chong Shi Jian .
Gen Ju Mian Xiang Dui Xiang Si Xiang ,Shi Jian Bei Feng Zhuang Cheng MotionEvent Dui Xiang ,You Yu Ben Pian Zhong Dian Bu Zai Yu Ci ,Suo Yi Zhi Hui She Ji Dao Ji Ge Yu Shou Zhi Hong Mo Xiang Guan De Chang Jian Shi Jian :
| Shi Jian | Jian Jie |
|---|---|
| ACTION_DOWN | Shou Zhi Chu Ci Jie Hong Dao Ping Mu Shi Hong Fa . |
| ACTION_MOVE | Shou Zhi Zai Ping Mu Shang Hua Dong Shi Hong Fa ,Hui Hui Duo Ci Hong Fa . |
| ACTION_UP | Shou Zhi Chi Kai Ping Mu Shi Hong Fa . |
| ACTION_CANCEL | Shi Jian Bei Shang Ceng Lan Jie Shi Hong Fa . |
Dui Yu Dan Zhi Hong Kong Lai Shuo ,Yi Ci Jian Dan De Jiao Hu Liu Cheng Shi Zhe Yang De :
Shou Zhi Luo Xia (ACTION_DOWN) -> Yi Dong (ACTION_MOVE) -> Chi Kai (ACTION_UP)
- Ben Ci Shi Li Zhong ACTION_MOVE You Duo Ci Hong Fa .
- Ru Guo Jin Jin Shi Dan Ji (Shou Zhi An Xia Zai Tai Qi ),Bu Hui Hong Fa ACTION_MOVE.
Shi Jian Fen Fa , Lan Jie Yu Xiao Fei
Guan Yu Zhe Yi Bu Fen Nei Rong ,Shang Yi Pian Wen Zhang Shi Jian Fen Fa Ji Zhi Yuan Li Yi Jing Jiang Liu Cheng Zheng Li De Bi Jiao Qing Chu Liao ,Ben Wen Hui Shen Ru Xi Jie Lai Yan Jiu Zhe Xie Nei Rong . Zhi Suo Yi Fen Kai Jiang ,Shi Wei Liao Fang Zhi Da Jia Bei Xi Jie Suo Mi Huo Er Hu Lue Liao Zheng Ti Luo Ji .
Biao Shi You Gai Fang Fa .
XBiao Shi Mei You Gai Fang Fa .
| Lei Xing | Xiang Guan Fang Fa | ViewGroup | View |
|---|---|---|---|
| Shi Jian Fen Fa | dispatchTouchEvent | ||
| Shi Jian Lan Jie | onInterceptTouchEvent | X | |
| Shi Jian Xiao Fei | onTouchEvent |
View Xiang Guan
dispatchTouchEvent Shi Shi Jian Fen Fa Ji Zhi Zhong De He Xin ,Suo You De Shi Jian Diao Du Du Gui Ta Guan . Bu Guo Wo Xi Kan Biao Ge , ViewGroup You dispatchTouchEvent Ye Jiu Suan Liao ,Bi Jing Ren Jia You Yi Dui ChildView Xu Yao Guan Li ,Dan Wei Sha View Ye You ?Zhe Jiu Yin Chu Liao Wo Men De Di Yi Ge Yi Wen .
Q: Wei Shi Yao View Hui You dispatchTouchEvent ?
A: Wo Men Zhi Dao View Ke Yi Zhu Ce Hen Duo Shi Jian Jian Ting Qi ,Li Ru :Dan Ji Shi Jian (onClick), Chang An Shi Jian (onLongClick), Hong Mo Shi Jian (onTouch),Bing Qie ViewZi Shen Ye You onTouchEvent Fang Fa ,Na Yao Wen Ti Lai Liao ,Zhe Yao Duo Yu Shi Jian Xiang Guan De Fang Fa Ying Gai You Shui Guan Li ?Wu Yong Zhi Yi Jiu Shi dispatchTouchEvent,Suo Yi View Ye Hui You Shi Jian Fen Fa .
Xiang Xin Kan Dao Zhe Li Hen Duo Xiao Huo Ban Hui Chan Sheng Di Er Ge Yi Wen ,View You Zhe Yao Duo Shi Jian Jian Ting Qi ,Dao Di Na Ge Xian Zhi Xing ?
Q: Yu View Shi Jian Xiang Guan De Ge Ge Fang Fa Diao Yong Shun Xu Shi Zen Yang De ?
A: Ru Guo Bu Qu Kan Yuan Ma ,Xiang Yi Xia Rang Zi Ji She Ji Hui Zen Yang ?
- Dan Ji Shi Jian (onClickListener) Xu Yao Liang Ge Liang Ge Shi Jian (ACTION_DOWN He ACTION_UP )Cai Neng Hong Fa ,Ru Guo Xian Fen Pei Gei onClickPan Duan ,Deng Ta Pan Duan Wan ,Yong Hu Shou Zhi Yi Jing Chi Kai Ping Mu ,Huang Hua Cai Du Liang Liao ,Ding Ran Zao Cheng View Wu Fa Xiang Ying Qi Ta Shi Jian ,Ying Gai Zui Hou Diao Yong . (Zui Hou )
- Chang An Shi Jian (onLongClickListener) Tong Li ,Ye Shi Xu Yao Chang Shi Jian Deng Dai Cai Neng Chu Jie Guo ,Ken Ding Bu Neng Pai Dao Qian Mian ,Dan Yin Wei Bu Xu Yao ACTION_UP,Ying Gai Pai Zai onClick Qian Mian . (onLongClickListener > onClickListener)
- Hong Mo Shi Jian (onTouchListener) Ru Guo Yong Hu Zhu Ce Liao Hong Mo Shi Jian ,Shuo Ming Yong Hu Yao Zi Ji Chu Li Hong Mo Shi Jian Liao ,Zhe Ge Ying Gai Pai Zai Zui Qian Mian . (Zui Qian )
- ViewZi Shen Chu Li (onTouchEvent) Ti Gong Liao Yi Chong Mo Ren De Chu Li Fang Shi ,Ru Guo Yong Hu Yi Jing Chu Li Hao Liao ,Ye Jiu Bu Xu Yao Liao ,Suo Yi Ying Gai Pai Zai onTouchListener Hou Mian . (onTouchListener > onTouchEvent)
Suo Yi Shi Jian De Diao Du Shun Xu Ying Gai Shi onTouchListener > onTouchEvent > onLongClickListener > onClickListener.
Xia Mian Wo Men Lai Kan Yi Xia Shi Ji Ce Shi Jie Guo :
Shou Zhi An Xia ,Bu Yi Dong ,Shao Deng Pian Ke Zai Tai Qi .
[GcsView ]: onTouchEvent ACTION_DOWN
[Listener ]: onLongClickListener
[Listener ]: onTouchListener ACTION_UP
[GcsView ]: onTouchEvent ACTION_UP
[Listener ]: onClickListener
Ke Yi Kan Dao ,Ce Shi Jie Guo Ye Zhi Chi Wo Men Cai Ce De Jie Lun ,Yin Wei Chang An onLongClickListener Bu Xu Yao ACTION_UP Suo Yi Hui Zai ACTION_DOWN Zhi Hou Jiu Hong Fa .
Jie Xia Lai Jiu Kan Yi Xia Yuan Ma Shi Zen Yao She Ji De (Sheng Lue Liao Da Liang Wu Guan Dai Ma ):
...
boolean result = false; // result Wei Fan Hui Zhi ,Zhu Yao Zuo Yong Shi Gao Su Diao Yong Zhe Shi Jian Shi Fou Yi Jing Bei Xiao Fei .
if (onFilterTouchEventForSecurity(event)) {
ListenerInfo li = mListenerInfo;
/**
* Ru Guo She Zhi Liao OnTouchListener,Bing Qie Dang Qian View Ke Dian Ji ,Jiu Diao Yong Jian Ting Qi De onTouch Fang Fa ,
* Ru Guo onTouch Fang Fa Fan Hui Zhi Wei true,Jiu She Zhi result Wei true.
*/
if (li != null && li.mOnTouchListener != null
&& (mViewFlags & ENABLED_MASK) == ENABLED
&& li.mOnTouchListener.onTouch(this, event)) {
result = true;
}
/**
* Ru Guo result Wei false,Ze Diao Yong Zi Shen De onTouchEvent.
* Ru Guo onTouchEvent Fan Hui Zhi Wei true,Ze She Zhi result Wei true.
*/
if (!result && onTouchEvent(event)) {
result = true;
}
}
...
return result;
}
Ru Guo Jue De Yuan Ma Huan Shi Tai Chang ,Na Yao Yong Wei Dai Ma Shi Xian Ying Dang Shi Zhe Yang De (Sheng Lue Ruo Gan An Quan Pan Duan ),Jian Dan Cu Bao :
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener.onTouch(this, event)) {
return true;
} else if (onTouchEvent(event)) {
return true;
}
return false;
}
Zheng Dang Ni Chen Mi Zai Yuan Ma De "Jing Miao "Luo Ji De Shi Hou ,Ni Ke Neng Mei Fa Xian You Liang Ge Dong Xi Shi Zong Liao ,Deng Hui Guo Shen Lai ,Ding Jing Yi Kan ,Ai You Ma Ya ,OnClick He OnLongClick Qu Na Li Liao ?
Bu Yao Dan Xin ,OnClick He OnLongClick De Ju Ti Diao Yong Wei Zhi Zai onTouchEvent Zhong ,Kan Yuan Ma (Tong Yang Sheng Lue Da Liang Wu Guan Dai Ma ):
...
final int action = event.getAction();
// Jian Cha Ge Chong clickable
if (((viewFlags & CLICKABLE) == CLICKABLE ||
(viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) ||
(viewFlags & CONTEXT_CLICKABLE) == CONTEXT_CLICKABLE) {
switch (action) {
case MotionEvent.ACTION_UP:
...
removeLongPressCallback(); // Yi Chu Chang An
...
performClick(); // Jian Cha Dan Ji
...
break;
case MotionEvent.ACTION_DOWN:
...
checkForLongClick(0); // Jian Ce Chang An
...
break;
...
}
return true; //
}
return false;
}
Zhu Yi Liao ,Di Yi Ge Zhong Dian Yao Chu Xian Liao (Qiao Hei Ban )!
Zhu Yi Shang Mian Dai Ma Zhong Cun Zai Yi Ge
return true;Bing Qie Shi Zhi Yao View Ke Dian Ji Jiu Fan Hui true,Jiu Biao Shi Shi Jian Bei Xiao Fei Liao .Ju Ge Li Zi : I have a RelativeLayout,I have a View,Ugh,RelativeLayout - View
<RelativeLayout
android:background="#CCC"
android:id="@+id/layout"
android:onClick="myClick"
android:layout_width="200dp"
android:layout_height="200dp">
<View
android:clickable="true"
android:layout_width="200dp"
android:layout_height="200dp" />
RelativeLayout>Xian Zai Ni You Liao Yi Ge RelativeLayout - View Ni Kai Kai Xin Xin De Wei RelativeLayout She Zhi Liao Yi Ge Dian Ji Shi Jian
myClick,Ran Er Ni Hui Fa Xian Bu Lun Zen Yao Dian Du Bu Hui Jie Shou Dao Xin Xi ,Zi Xi Yi Kan ,Fa Xian Nei Bu De View You Yi Ge Shu Xingandroid:clickable="true"Zheng Shi Zhe Ge Kan Si Bu Qi Yan De Shu Xing Ba Shi Jian Gei Xiao Fei Diao Liao ,You Ci Wo Men Ke Yi De Chu Ru Xia Jie Lun :
1. Bu Lun View Zi Shen Shi Fou Zhu Ce Dian Ji Shi Jian ,Zhi Yao View Shi Ke Dian Ji De Jiu Hui Xiao Fei Shi Jian .
2. Shi Jian Shi Fou Bei Xiao Fei You Fan Hui Zhi Jue Ding ,true Biao Shi Xiao Fei ,false Biao Shi Bu Xiao Fei ,Yu Shi Fou Shi Yong Liao Shi Jian Wu Guan .
Guan Yu View De Shi Jian Fen Fa Xian Shuo Zhe Yao Duo ,Xia Mian Wo Men Lai Kan Yi Xia ViewGroup De Shi Jian Fen Fa .
ViewGroup Xiang Guan
ViewGroup(Tong Chang Shi Ge Chong Layout) De Shi Jian Fen Fa Xiang Dui Lai Shuo Jiu Yao Ma Fan Yi Xie ,Yin Wei ViewGroup Bu Jin Yao Kao Lu Zi Shen ,Huan Yao Kao Lu Ge Chong ChildView,Yi Dan Chu Li Bu Hao Jiu Rong Yi Yin Qi Ge Chong Shi Jian Chong Tu ,Zheng Suo Wei Yang Er Fang Zhi Fu Mu Nan A .
VIewGroup De Shi Jian Fen Fa Liu Cheng You Shi Ru He De Ni ?
Shang Yi Pian Wen Zhang Shi Jian Fen Fa Ji Zhi Yuan Li Zhong Wo Men Liao Jie Dao Shi Jian Shi Tong Guo ViewGroupYi Ceng Yi Ceng Chuan Di De ,Zui Zhong Chuan Di Gei View,ViewGroup Yao Bi Ta De ChildView Xian Na Dao Shi Jian ,Bing Qie You Quan Jue Ding Shi Fou Gao Su Yao Gao Su ChildView. Zai Mo Ren De Qing Kuang Xia ViewGroup Shi Jian Fen Fa Liu Cheng Shi Zhe Yang De .
- 1.Pan Duan Zi Shen Shi Fou Xu Yao (Xun Wen onInterceptTouchEvent Shi Fou Lan Jie ),Ru Guo Xu Yao ,Diao Yong Zi Ji De onTouchEvent.
- 2.Zi Shen Bu Xu Yao Huo Zhe Bu Que Ding ,Ze Xun Wen ChildView ,Yi Ban Lai Shuo Shi Diao Yong Shou Zhi Hong Mo Wei Zhi De ChildView.
- 3.Ru Guo Zi ChildView Bu Xu Yao Ze Diao Yong Zi Shen De onTouchEvent.
Yong Wei Dai Ma Ying Gai Shi Zhe Yang De :
boolean result = false; // Mo Ren Zhuang Tai Wei Mei You Xiao Fei Guo
if (!onInterceptTouchEvent(ev)) { // Ru Guo Mei You Lan Jie Jiao Gei Zi View
result = child.dispatchTouchEvent(ev);
}
if (!result) { // Ru Guo Shi Jian Mei You Bei Xiao Fei ,Xun Wen Zi Shen onTouchEvent
result = onTouchEvent(ev);
}
return result;
}
You Ren Kan Dao Zhe Li Ke Neng Hui You Yi Wen ,Wo Kan Guo Yuan Ma ,ViewGroup De dispatchTouchEvent Ke You Er Bai Duo Xing Ni ,Ni Nong Zhe Ji Xing Jiu Xiang Hu You Wo ,Bie Yi Wei Wo Du Shu Shao .
Dang Ran Liao ,Shang Shu Yuan Ma Shi Bu Wan Shan De ,Huan You Hen Duo Wen Ti Shi Mei You Jie Jue De ,Li Ru :
1. ViewGroup Zhong Ke Neng You Duo Ge ChildView,Ru He Pan Duan Ying Gai Fen Pei Gei Na Yi Ge ?
Zhe Ge Hen Rong Yi ,Jiu Shi Ba Suo You De ChildView Bian Li Yi Bian ,Ru Guo Shou Zhi Hong Mo De Dian Zai ChildView Qu Yu Nei Jiu Fen Fa Gei Zhe Ge View.
2. Dang Gai Dian De ChildView You Zhong Die Shi Ying Gai Ru He Fen Pei ?
Dang ChildView Zhong Die Shi ,Yi Ban Hui Fen Pei Gei Xian Shi Zai Zui Shang Mian De ChildView.
Ru He Pan Duan Na Ge Shi Xian Shi Zai Zui Shang Mian De Ni ?Hou Mian Jia Zai De Yi Ban Hui Fu Gai Diao Zhi Qian De ,Suo Yi Xian Shi Zai Zui Shang Mian De Shi Zui Hou Jia Zai De .
Ru Xia :
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.gcssloop.viewtest.MainActivity">
<View
android:id="@+id/view1"
android:background="#E4A07B"
android:layout_width="200dp"
android:layout_height="200dp"/>
<View
android:id="@+id/view2"
android:layout_margin="100dp"
android:background="#BDDA66"
android:layout_width="200dp"
android:layout_height="200dp"/>
RelativeLayout>
Dang Shou Zhi Dian Ji You Zhong Die Qu Yu Shi ,Fen Ru Xia Ji Chong Qing Kuang :
- Zhi You View1 Ke Dian Ji Shi ,Shi Jian Jiang Hui Fen Pei Gei View1,Ji Shi Bei View2 Zhe Dang ,Zhe Yi Bu Fen Reng Shi View1 De Ke Dian Ji Qu Yu .
- Zhi You View2 Ke Dian Ji Shi ,Shi Jian Jiang Hui Fen Pei Gei View2.
- View1 He View2 Jun Ke Dian Ji Shi ,Shi Jian Hui Fen Pei Gei Hou Jia Zai De View2,View2 Jiang Shi Jian Xiao Fei Diao ,View1Jie Shou Bu Dao Shi Jian .
Zhu Yi :
- Shang Mian Shuo De Shi Ke Dian Ji ,Ke Dian Ji Bao Gua Hen Duo Chong Qing Kuang ,Zhi Yao Ni Gei ViewZhu Ce Liao
onClickListener, onLongClickListener, OnContextClickListenerQi Zhong De Ren He Yi Ge Jian Ting Qi Huo Zhe She Zhi Liaoandroid:clickable="true"Jiu Dai Biao Zhe Ge View Shi Ke Dian Ji De .
Ling Wai ,Mou Xie View Mo Ren Jiu Shi Ke Dian Ji De ,Li Ru ,Button,CheckBox Deng . - Gei View Zhu Ce
OnTouchListenerBu Hui Ying Xiang View De Ke Dian Ji Zhuang Tai . Ji Shi Gei View Zhu CeOnTouchListener,Zhi Yao Bu Fan HuitrueJiu Bu Hui Xiao Fei Shi Jian .
3. ViewGroup He ChildView Tong Shi Zhu Ce Liao Shi Jian Jian Ting Qi (onClickDeng ),Na Ge Hui Zhi Xing ?
Shi Jian You Xian Gei ChildView,Hui Bei ChildViewXiao Fei Diao ,ViewGroup Bu Hui Xiang Ying .
4. Suo You Shi Jian Du Ying Gai Bei Tong Yi View Xiao Fei
Zai Shang Mian De Li Zi Zhong Wo Men Fen Xi Hou Ke Yi Liao Jie Dao ,Tong Yi Ci Dian Ji Shi Jian Zhi Neng Bei Yi Ge View Xiao Fei ,Zhe Shi Wei Shi Ni ?Zhu Yao Shi Wei Liao Fang Zhi Shi Jian Xiang Ying Hun Luan ,Ru Guo Zai Yi Ci Wan Zheng De Shi Jian Zhong Fen Bie Jiang Bu Tong De Shi Jian Fen Pei Gei Liao Bu Tong De View Rong Yi Zao Cheng Shi Jian Xiang Ying Hun Luan .
( View Zhong onClick Shi Jian Xu Yao Tong Shi Jie Shou Dao ACTION_DOWN He ACTION_UP Cai Neng Hong Fa ,Ru Guo Fen Pei Gei Liao Bu Tong De View,Na Yao onClick Jiang Wu Fa Bei Zheng Que Hong Fa ).
An Zhuo Wei Liao Bao Zheng Suo You De Shi Jian Du Shi Bei Yi Ge View Xiao Fei De ,Dui Di Yi Ci De Shi Jian ( ACTION_DOWN )Jin Xing Liao Te Shu Pan Duan ,View Zhi You Xiao Fei Liao ACTION_DOWN Shi Jian ,Cai Neng Jie Shou Dao Hou Xu De Shi Jian (Ke Dian Ji Kong Jian Hui Mo Ren Xiao Fei Suo You Shi Jian ),Bing Qie Hui Jiang Hou Xu Suo You Shi Jian Chuan Di Guo Lai ,Bu Hui Zai Chuan Di Gei Qi Ta View,Chu Fei Shang Ceng View Jin Xing Liao Lan Jie .
Ru Guo Shang Ceng View Lan Jie Liao Dang Qian Zheng Zai Chu Li De Shi Jian ,Hui Shou Dao Yi Ge ACTION_CANCEL,Biao Shi Dang Qian Shi Jian Yi Jing Jie Shu ,Hou Xu Shi Jian Bu Hui Zai Chuan Di Guo Lai .
Yuan Ma :
Qi Shi Ru Guo Neng Gou Li Jie Shang Mian De Nei Rong ,Bu Kan Yuan Ma Ye Neng Fei Chang Shun Li De Shi Yong Shi Jian Fen Fa ,Dan Yuan Ma Zhong Neng Wa Jue Chu Geng Duo De Nei Rong .
// Diao Shi Yong
if (mInputEventConsistencyVerifier != null) {
mInputEventConsistencyVerifier.onTouchEvent(ev, 1);
}
// Pan Duan Shi Jian Shi Fou Shi Zhen Dui Ke Fang Wen De Jiao Dian Shi Tu (Hen Wan Cai Tian Jia De Nei Rong ,Ge Ren Cai Ce He Ping Mu Fu Zhu Xiang Guan ,Fang Bian Mang Ren Deng Shi Yong She Bei )
if (ev.isTargetAccessibilityFocus() && isAccessibilityFocusedViewOrHost()) {
ev.setTargetAccessibilityFocus(false);
}
boolean handled = false;
if (onFilterTouchEventForSecurity(ev)) {
final int action = ev.getAction();
final int actionMasked = action & MotionEvent.ACTION_MASK;
// Chu Li Di Yi Ci ACTION_DOWN.
if (actionMasked == MotionEvent.ACTION_DOWN) {
// Qing Chu Zhi Qian Suo You De Zhuang Tai
cancelAndClearTouchTargets(ev);
resetTouchState();
}
// Jian Cha Shi Fou Xu Yao Lan Jie .
final boolean intercepted;
if (actionMasked == MotionEvent.ACTION_DOWN || mFirstTouchTarget != null) {
final boolean disallowIntercept = (mGroupFlags & FLAG_DISALLOW_INTERCEPT) != 0;
if (!disallowIntercept) {
intercepted = onInterceptTouchEvent(ev); // Xun Wen Shi Fou Lan Jie
ev.setAction(action); // Hui Fu Cao Zuo ,Fang Zhi Bei Geng Gai
} else {
intercepted = false;
}
} else {
// Mei You Mu Biao Lai Chu Li Gai Shi Jian ,Er Qie Ye Bu Shi Yi Ge Xin De Shi Jian Shi Jian (ACTION_DOWN), Jin Xing Lan Jie .
intercepted = true;
}
// Pan Duan Shi Jian Shi Fou Shi Zhen Dui Ke Fang Wen De Jiao Dian Shi Tu
if (intercepted || mFirstTouchTarget != null) {
ev.setTargetAccessibilityFocus(false);
}
// Jian Cha Shi Jian Shi Fou Bei Qu Xiao (ACTION_CANCEL).
final boolean canceled = resetCancelNextUpFlag(this)
|| actionMasked == MotionEvent.ACTION_CANCEL;
final boolean split = (mGroupFlags & FLAG_SPLIT_MOTION_EVENTS) != 0;
TouchTarget newTouchTarget = null;
boolean alreadyDispatchedToNewTouchTarget = false;
// Ru Guo Mei You Qu Xiao Ye Mei You Bei Lan Jie (Jin Ru Shi Jian Fen Fa )
if (!canceled && !intercepted) {
// Ru Guo Shi Jian Shi Zhen Dui Ke Fang Wen Xing Jiao Dian Shi Tu ,Wo Men Jiang Qi Ti Gong Gei Ju You Ke Fang Wen Xing Jiao Dian De Shi Tu .
// Ru Guo Ta Bu Chu Li Ta ,Wo Men Qing Chu Gai Biao Zhi Bing Xiang Wang Chang Yi Yang Jiang Shi Jian Fen Pai Gei Suo You De ChildView.
// Wo Men Jian Ce Bing Bi Mian Bao Chi Zhe Chong Zhuang Tai ,Yin Wei Zhe Xie Shi Fei Chang Han Jian .
View childWithAccessibilityFocus = ev.isTargetAccessibilityFocus()
? findChildWithAccessibilityFocus() : null;
if (actionMasked == MotionEvent.ACTION_DOWN
|| (split && actionMasked == MotionEvent.ACTION_POINTER_DOWN)
|| actionMasked == MotionEvent.ACTION_HOVER_MOVE) {
final int actionIndex = ev.getActionIndex();
final int idBitsToAssign = split ? 1 << ev.getPointerId(actionIndex)
: TouchTarget.ALL_POINTER_IDS;
// Qing Chu Ci Zhi Zhen IDDe Zao Qi Hong Mo Mu Biao ,Fang Zhi Bu Tong Bu .
removePointersFromTouchTargets(idBitsToAssign);
final int childrenCount = mChildrenCount;
if (newTouchTarget == null && childrenCount != 0) {
final float x = ev.getX(actionIndex); // Huo Qu Hong Mo Wei Zhi Zuo Biao
final float y = ev.getY(actionIndex);
// Cha Zhao Ke Yi Jie Shou Shi Jian De ChildView
final ArrayList<View> preorderedList = buildOrderedChildList();
final boolean customOrder = preorderedList == null
&& isChildrenDrawingOrderEnabled();
final View[] children = mChildren;
// VZhu Yi ,Cong Zui Hou Xiang Qian Sao Miao
for (int i = childrenCount - 1; i >= 0; i--) {
final int childIndex = customOrder
? getChildDrawingOrder(childrenCount, i) : i;
final View child = (preorderedList == null)
? children[childIndex] : preorderedList.get(childIndex);
// Ru Guo You Yi Ge Shi Tu Ju You Ke Fang Wen Xing Jiao Dian ,Wo Men Xi Wang Ta Shou Xian Huo Qu Shi Jian ,
// Ru Guo Bu Chu Li ,Wo Men Jiang Zhi Xing Zheng Chang De Fen Pai .
// Jin Guan Zhe Ke Neng Hui Fen Fa Liang Ci ,Dan Ta Neng Bao Zheng Zai Gei Ding De Shi Jian Nei Geng An Quan De Zhi Xing .
if (childWithAccessibilityFocus != null) {
if (childWithAccessibilityFocus != child) {
continue;
}
childWithAccessibilityFocus = null;
i = childrenCount - 1;
}
// Jian Cha ViewShi Fou Yun Xu Jie Shou Shi Jian (Ji Chu Yu Xian Shi Zhuang Tai (VISIBLE)Huo Zhe Zheng Zai Bo Fang Dong Hua )
// Jian Cha Hong Mo Wei Zhi Shi Fou Zai ViewQu Yu Nei
if (!canViewReceivePointerEvents(child)
|| !isTransformedTouchPointInView(x, y, child, null)) {
ev.setTargetAccessibilityFocus(false);
continue;
}
// getTouchTarget Zhong Pan Duan Liao child Shi Fou Bao Han Zai mFirstTouchTarget Zhong
// Ru Guo You Fan Hui target,Ru Guo Mei You Fan Hui null
newTouchTarget = getTouchTarget(child);
if (newTouchTarget != null) {
// ChildView Yi Jing Zhun Bei Hao Jie Shou Zai Qi Qu Yu Nei De Shi Jian .
newTouchTarget.pointerIdBits |= idBitsToAssign;
break; //
}
resetCancelNextUpFlag(child);
if (dispatchTransformedTouchEvent(ev, false, child, idBitsToAssign)) {
mLastTouchDownTime = ev.getDownTime();
if (preorderedList != null) {
for (int j = 0; j < childrenCount; j++) {
if (children[childIndex] == mChildren[j]) {
mLastTouchDownIndex = j;
break;
}
}
} else {
mLastTouchDownIndex = childIndex;
}
mLastTouchDownX = ev.getX();
mLastTouchDownY = ev.getY();
newTouchTarget = addTouchTarget(child, idBitsToAssign);
alreadyDispatchedToNewTouchTarget = true;
break;
}
ev.setTargetAccessibilityFocus(false);
}
if (preorderedList != null) preorderedList.clear();
}
if (newTouchTarget == null && mFirstTouchTarget != null) {
// Mei You Zhao Dao ChildView Jie Shou Shi Jian
newTouchTarget = mFirstTouchTarget;
while (newTouchTarget.next != null) {
newTouchTarget = newTouchTarget.next;
}
newTouchTarget.pointerIdBits |= idBitsToAssign;
}
}
}
// Fen Fa TouchTarget
if (mFirstTouchTarget == null) {
// Mei You TouchTarget,Jiang Dang Qian ViewGroup Dang Zuo Pu Tong De View Chu Li .
handled = dispatchTransformedTouchEvent(ev, canceled, null,
TouchTarget.ALL_POINTER_IDS);
} else {
// Fen Fa TouchTarget,Ru Guo Wo Men Yi Jing Fen Fa Guo ,Ze Bi Mian Fen Pei Gei Xin De Mu Biao .
// Ru You Bi Yao ,Qu Xiao Fen Fa .
TouchTarget predecessor = null;
TouchTarget target = mFirstTouchTarget;
while (target != null) {
final TouchTarget next = target.next;
if (alreadyDispatchedToNewTouchTarget && target == newTouchTarget) {
handled = true;
} else {
final boolean cancelChild = resetCancelNextUpFlag(target.child)
|| intercepted;
if (dispatchTransformedTouchEvent(ev, cancelChild,
target.child, target.pointerIdBits)) {
handled = true;
}
if (cancelChild) {
if (predecessor == null) {
mFirstTouchTarget = next;
} else {
predecessor.next = next;
}
target.recycle();
target = next;
continue;
}
}
predecessor = target;
target = next;
}
}
// Ru Guo Xu Yao ,Geng Xin Zhi Zhen De Hong Mo Mu Biao Lie Biao Huo Qu Xiao .
if (canceled
|| actionMasked == MotionEvent.ACTION_UP
|| actionMasked == MotionEvent.ACTION_HOVER_MOVE) {
resetTouchState();
} else if (split && actionMasked == MotionEvent.ACTION_POINTER_UP) {
final int actionIndex = ev.getActionIndex();
final int idBitsToRemove = 1 << ev.getPointerId(actionIndex);
removePointersFromTouchTargets(idBitsToRemove);
}
}
if (!handled && mInputEventConsistencyVerifier != null) {
mInputEventConsistencyVerifier.onUnhandledEvent(ev, 1);
}
return handled;
}
He Xin Yao Dian
- Shi Jian Fen Fa Yuan Li : Ze Ren Lian Mo Shi ,Shi Jian Ceng Ceng Chuan Di ,Zhi Dao Bei Xiao Fei .
- View De
dispatchTouchEventZhu Yao Yong Yu Diao Du Zi Shen De Jian Ting Qi He onTouchEvent. - ViewDe Shi Jian De Diao Du Shun Xu Shi onTouchListener > onTouchEvent > onLongClickListener > onClickListener .
- Bu Lun View Zi Shen Shi Fou Zhu Ce Dian Ji Shi Jian ,Zhi Yao View Shi Ke Dian Ji De Jiu Hui Xiao Fei Shi Jian .
- Shi Jian Shi Fou Bei Xiao Fei You Fan Hui Zhi Jue Ding ,true Biao Shi Xiao Fei ,false Biao Shi Bu Xiao Fei ,Yu Shi Fou Shi Yong Liao Shi Jian Wu Guan .
- ViewGroup Zhong Ke Neng You Duo Ge ChildView Shi ,Jiang Shi Jian Fen Pei Gei Bao Han Dian Ji Wei Zhi De ChildView.
- ViewGroup He ChildView Tong Shi Zhu Ce Liao Shi Jian Jian Ting Qi (onClickDeng ),You ChildView Xiao Fei .
- Yi Ci Hong Mo Liu Cheng Zhong Chan Sheng Shi Jian Ying Bei Tong Yi View Xiao Fei ,Quan Bu Jie Shou Huo Zhe Quan Bu Ju Jue .
- Zhi Yao Jie Shou ACTION_DOWN Jiu Yi Wei Zhao Jie Shou Suo You De Shi Jian ,Ju Jue ACTION_DOWN Ze Bu Hui Shou Dao Hou Xu Nei Rong .
- Ru Guo Dang Qian Zheng Zai Chu Li De Shi Jian Bei Shang Ceng View Lan Jie ,Hui Shou Dao Yi Ge ACTION_CANCEL,Hou Xu Shi Jian Bu Hui Zai Chuan Di Guo Lai .
Zong Jie
Ben Wen Luo Suo Liao Zhe Yao Duo Nei Rong ,Dan Zhen Zheng Xu Yao Zhu Yi De Jiu Shi He Xin Yao Dian Zhong De Ji Ge Gai Nian ,Zhi Yao Neng Zheng Que Li Jie Zhe Xie Gai Nian ,Xiang Xin Li Jie Shi Jian Fen Fa Ji Zhi Jiang Zai Ye Bu Shi Nan Ti .
Zui Hou ,Ge Ren Tui Jian Yue Du Yuan Ma De Fang Fa ,Xian Chang Shi Yong Zi Ji De Jiao Du Qu Fen Xi ,Jian Li Gai Nian ,Ran Hou Kan Yuan Ma Jin Xing Yan Zheng , Dui Bi ,Ru Guo Fa Xian Zi Ji Jian Li De Gai Nian You Wen Ti ,Jiu Chang Shi Xiu Zheng Zi Ji De Gai Nian ,Zhe Yang Bi Jiao Rong Yi Li Jie Yuan Zuo Zhe De Yi Tu ,Ye Bu Rong Yi Bei Zhong Duo De Dai Ma Suo Mi Huo .
Jiu Xiang ViewGroup Zhong De dispatchTouchEvent Nei Rong Fei Chang Duo ,Zhu Yao Shi Wei Liao Ying Dui Shi Ji De Chang Jing ,Li Mian You Hen Duo An Quan Pan Duan ,Chu Li Duo Zhi Hong Kong Deng Nei Rong ,Zhe Xie Ru Guo Bu Xian Jian Li Gai Nian Jiu Qu Kan Yuan Ma Hen Rong Yi Bei Zhe Xie Xi Jie Wen Ti Suo Mi Huo .
Can Kao Zi Liao
View
ViewGroup.java
Android TouchShi Jian Fen Fa Xiang Jie
Ji Yu Yuan Ma Lai Liao Jie AndroidDe Shi Jian Fen Fa Ji Zhi