ViewDragHelper幾個方法的理解
阿新 • • 發佈:2019-01-04
smoothSlideViewTo()
通過此方法可以把父佈局中某一個子View移動到指定的左邊,移動過程會呼叫ViewDragHelper.Callback中的onViewPositionChanged()、onViewReleased()、clampViewPositionVertical等方法。
換句話說該方法就相當於模仿了人為的拖拽子View到特點座標的過程。
可以通過此方法實現手勢慣性的效果(只要手指輕輕滑動一段距離,判斷使用者確實想把子View滑動到目標座標,即使使用者中途鬆手或者未能滑動到目標座標,也會自動把子View滑動到目標位置)
程式碼通常這樣寫:
if (mDragHelper.smoothSlideViewTo(mHeaderView, x, y)) {
ViewCompat.postInvalidateOnAnimation(this );
postInvalidate();
return true;
}
settleCapturedViewAt()
該方法與smoothSlideViewTo所實現的效果是一樣的,區別在於smoothSlideViewTo()是指定一個子View,而settleCapturedViewAt()是在ViewDragHelper.Callback的onViewReleased()方法中獲取當前釋放的子View,然後實現手勢慣性的效果。
程式碼如下:
@Override
public void onViewReleased(View releasedChild, float xvel, float yvel) {
int top = getPaddingTop();
if (yvel > 0 || (yvel == 0 && mDragOffset > 0.5f)) {
top += mDragRange;
}
mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), top);
invalidate();
}
先寫到這裡,另外的方法後續補上來。。。。