Open yzykami opened 6 years ago
我这对做了些处理,拖拽失效我看了下,应该是ViewDragHelper 中 tryCaptureViewForDrag()方法里获取mCallback.tryCaptureView()的回调判断在 Touch方法之前先执行而在newX = motionEvent.getRawX();之后若有false返回一次,那下一次一直就以false返回,onInterceptTouchEvent() 就一直返回false,导致拖拽失效。
我这边的处理 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean handled = false; ensureTarget(); checkPullBack(ev);//在这里加上touch方法里的偏移判断 if (isEnabled()) { handled = viewDragHelper.shouldInterceptTouchEvent(ev); } else { viewDragHelper.cancel(); } return !handled ? super.onInterceptTouchEvent(ev) : handled; }
private void chkDragable() { setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) {
---------------------"lastX = motionEvent.getRawX();"------------------------
}
标注的地方, 应该是 newX = motionEvent.getRawX(); 但是修改之后, 拖拽就失效了