1、常見的滑動(dòng)沖突場(chǎng)景
1、外部滑動(dòng)方向和內(nèi)部滑動(dòng)方向不一致
2、外部滑動(dòng)方向和內(nèi)部滑動(dòng)方向一致
3、上面兩種情況的嵌套
2、滑動(dòng)沖突的解決方式
1、外部攔截法(推薦使用)
1、重寫ViewGroup的onInterceptouchEvent方法
2、不攔截Action_down、Action_up事件,否則后續(xù)的相同事件都會(huì)交給ViewGroup處理,事件無法傳遞到View
3、處理Action_move事件,根據(jù)情況,攔截水平滑動(dòng)還是豎直滑動(dòng)(依據(jù)水平方向和豎直方向上的距離差來判斷是水平滑動(dòng)還是豎直滑動(dòng))
2、內(nèi)部攔截法
1、ViewGroup對(duì)所有事件都不攔截
2、所有事件都傳遞到子View,子View根據(jù)需要是否消耗事件,不消耗
則交給父容器ViewGroup進(jìn)行處理,需要配合requestDisallowInterceptTouchEvent方法