(1)参考:http://blog.sina.com.cn/s/blog_5d36a42c0101azvr.html
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {return super.dispatchTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return super.onInterceptTouchEvent(arg0);
}
float mDownX, mDownY;
float mMoveX, mMoveY;
@Override
public boolean onTouchEvent(MotionEvent arg0) {
isChildMyself = true;
switch (arg0.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownX = arg0.getX();
mDownY = arg0.getY();
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
mMoveX = arg0.getX();
mMoveY = arg0.getY();
if(Math.abs(mMoveY-mDownY) -Math.abs(mMoveX-mDownX) >= 10){
getParent().requestDisallowInterceptTouchEvent(false); //Y轴偏移与X轴偏移之差大10及以上,则由Parent(可能是listview)拦截
}else{
getParent().requestDisallowInterceptTouchEvent(true); //Y轴偏移与X轴偏移之差小10及以下, 则Parent(可能是listview)不拦截
}
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_CANCEL:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.onTouchEvent(arg0);
}