最近项目中,要做类似微信录音,长按录音,手指移动到其他地方取消录音。这些录音button都在水平列表HorizonScrollView
中, 测试当移动到其他地方是接收不到Action_Move 设置请求父控件不拦截后,又会导致scrollView滑动出现问题! 有哪位大神会的?我发代码给您看下!谢谢!
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
int x = (int) event.getX();
int y = (int) event.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
Log.i("wtf"," -------------------------- ACTION_DOWN");
// isRecording = true;
changeState(STATE_RECORDING);
break;
case MotionEvent.ACTION_MOVE:
Log.i("wtf"," -------------------------- ACTION_MOVE");
// getParent().requestDisallowInterceptTouchEvent(false);
WorkMarkUi.flag=0;
if (isRecording) {
//根据x y的坐标判断是否想取消
if (wantToCancel(x, y)) {
changeState(STATE_WANT_TO_CANCEL);
} else {
changeState(STATE_RECORDING);
}
}
break;
case MotionEvent.ACTION_UP:
WorkMarkUi.flag=-1;
// getParent().requestDisallowInterceptTouchEvent(true);
Log.i("wtf"," -------------------------- ACTION_UP");
if(!mReady){
reset();
return super.onTouchEvent(event);
}
onActionUp();
break;
}
return super.onTouchEvent(event);
}
ScrollView:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (WorkMarkUi.flag == -1) {
return super.onInterceptTouchEvent(ev);
}else{
return false;
}
}
监听滑动事件,按住子view的把事件给子view,否则父view自己处理