android 事件分发机制解决滑动冲突
在写viewpager跟recycler 时候遇到了滑动冲突问题 使用时间分发可以有效解决
public class MyRelativeLayout extends RelativeLayout {
public MyRelativeLayout(Context context) {
super(context);
}
public MyRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
float mDownX,mDownY,mMoveX,mMoveY;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
// mDownX = ev.getX();
// mDownY = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
// mMoveX = ev.getX();
// mMoveY = ev.getY();
// if(Math.abs(mMoveX-mDownX)>Math.abs(mMoveY-mDownY)){
getParent().requestDisallowInterceptTouchEvent(true);
// }else{
// getParent().requestDisallowInterceptTouchEvent(false);
// }
break;
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}
}