ViewDragHelper几个方法的理解

转载标明出处:http://blog.csdn.net/coder_nice

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

先写到这里,另外的方法后续补上来。。。。

你可能感兴趣的:(源码分析,view绘制)