下面列出了android.support.v4.widget.ViewDragHelper#STATE_SETTLING 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isDragLocked()) {
return super.onInterceptTouchEvent(ev);
}
mDragHelper.processTouchEvent(ev);
mGestureDetector.onTouchEvent(ev);
accumulateDragDist(ev);
boolean couldBecomeClick = couldBecomeClick(ev);
boolean settling = mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING;
boolean idleAfterScrolled = mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE
&& mIsScrolling;
// must be placed as the last statement
mPrevX = ev.getX();
// return true => intercept, cannot trigger onClick event
return !couldBecomeClick && (settling || idleAfterScrolled);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isDragLocked()) {
return super.onInterceptTouchEvent(ev);
}
mDragHelper.processTouchEvent(ev);
mGestureDetector.onTouchEvent(ev);
accumulateDragDist(ev);
boolean couldBecomeClick = couldBecomeClick(ev);
boolean settling = mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING;
boolean idleAfterScrolled = mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE
&& mIsScrolling;
// must be placed as the last statement
mPrevX = ev.getX();
mPrevY = ev.getY();
// return true => intercept, cannot trigger onClick event
return !couldBecomeClick && (settling || idleAfterScrolled);
}
@Override
public void onViewDragStateChanged(int state) {
if (state == mDraggingState) { // no change
return;
}
if ((mDraggingState == ViewDragHelper.STATE_DRAGGING || mDraggingState == ViewDragHelper.STATE_SETTLING) &&
state == ViewDragHelper.STATE_IDLE) {
// the view stopped from moving.
if (mDraggingBorder == 0) {
onStopDraggingToClosed();
} else if (mDraggingBorder == mVerticalRange) {
mIsOpen = true;
}
}
if (state == ViewDragHelper.STATE_DRAGGING) {
onStartDragging();
}
mDraggingState = state;
}
public void setMode(Mode mode) {
if (mDragHelper.getViewDragState() == ViewDragHelper.STATE_SETTLING) {
return;
}
//如果点击了月模式并且当前模式不是月模式的话
if (mode.equals(Mode.MONTH)) {
// 月模式切月模式
if (currentMode.equals(Mode.MONTH)) {
isModeChange = false;
}
//周模式切月模式
if (currentMode.equals(Mode.WEEK)) {
isModeChange = true;
}
setWeek2MonthMode();
return;
}
if (mode.equals(Mode.WEEK)) {
//周模式切周模式
if (currentMode.equals(Mode.WEEK)) {
isModeChange = false;
}
//月模式切周模式
if (currentMode.equals(Mode.MONTH)) {
isModeChange = true;
}
setMonth2WeekMode();
}
}
@Override
public void onViewDragStateChanged(int state) {
if (state == draggingState) return;
if ((draggingState == ViewDragHelper.STATE_DRAGGING ||
draggingState == ViewDragHelper.STATE_SETTLING) &&
state == ViewDragHelper.STATE_IDLE) {
// the view stopped from moving.
if (draggingOffset == getDragRange()) {
finish();
}
}
draggingState = state;
}
@Override
public void onViewDragStateChanged(int state) {
if (state == draggingState) return;
if ((draggingState == ViewDragHelper.STATE_DRAGGING || draggingState == ViewDragHelper.STATE_SETTLING) &&
state == ViewDragHelper.STATE_IDLE) {
// the view stopped from moving.
if (draggingOffset == getDragRange()) {
finish();
}
}
draggingState = state;
}
@Override
public void onViewDragStateChanged(int state) {
if (state == draggingState) return;
if ((draggingState == ViewDragHelper.STATE_DRAGGING || draggingState == ViewDragHelper.STATE_SETTLING) &&
state == ViewDragHelper.STATE_IDLE) {
// the view stopped from moving.
if (draggingOffset == getDragRange()) {
onFinishListener.onFinishState();
}
}
draggingState = state;
}
public boolean isMoving() {
return (mDraggingState == ViewDragHelper.STATE_DRAGGING ||
mDraggingState == ViewDragHelper.STATE_SETTLING);
}