private ViewDragHelper.Callback callback = new ViewDragHelper.Callback() {
/**重写tryCaptureView,何时开始检测触摸事件,
* 当前触摸的是MainView时开始检测*/
@Override
public boolean tryCaptureView(View child, int pointerId) {
return mMainView == child;
}
/**水平垂直方向上的滑动,默认返回0,不滑动*/
@Override
public int clampViewPositionHorizontal(View child, int left, int dx) {
// return super.clampViewPositionHorizontal(child, left, dx);
return left;
}
@Override
public int clampViewPositionVertical(View child, int top, int dy) {
// return super.clampViewPositionVertical(child, top, dy);
return top;
}
/**拖动结束后调用,自动滑动打开或关闭菜单*/
@Override
public void onViewReleased(View releasedChild, float xvel, float yvel) {
super.onViewReleased(releasedChild, xvel, yvel);
if (mMainView.getTop() > mHeight / 2) {
mViewDragHelper.smoothSlideViewTo(mMainView, 0, (int) (mHeight * 1.2f));
} else {
if (mMainView.getLeft() < mWidth / 2) {
//关闭菜单
mViewDragHelper.smoothSlideViewTo(mMainView, 0, 0);
} else {
mViewDragHelper.smoothSlideViewTo(mMainView, (int) (mWidth * 1.2f), 0);
}
}
ViewCompat.postInvalidateOnAnimation(ViewDragHelperView.this);
}
/**更改scale进行缩放*/
@Override
public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
super.onViewPositionChanged(changedView, left, top, dx, dy);
}
/**状态改变*/
@Override
public void onViewDragStateChanged(int state) {
super.onViewDragStateChanged(state);
}
/**触摸后回调*/
@Override
public void onViewCaptured(View capturedChild, int activePointerId) {
super.onViewCaptured(capturedChild, activePointerId);
}
};