1. 程式人生 > >ViewDragHelper幾個方法的理解

ViewDragHelper幾個方法的理解

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(); }

先寫到這裡,另外的方法後續補上來。。。。