View的滑动

2018-10-11  本文已影响0人  blueizz

一、实现View滑动的方式

offsetLeftAndRight(offsetX)
offsetTopAndBottom(offsetY)
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mView.getLayoutParams();
params.leftMargin = mView.getLeft() + offsetX;
params.topMargin = mView.getTop() + offsetY;
mView.setLayoutParams(params);
float x = mView.getX();
float y = mView.getY();
ObjectAnimator.ofFloat(mView, "translationX", x , x + offsetX).start();
ObjectAnimator.ofFloat(mView, "translationY", y , y + offsetY).start();
    Scroller mScroller = new Scroller(context);

    /**
     * 滑动到指定位置
     *
     * @param destX 目标x坐标
     * @param destY 目标y坐标
     */
    public void smoothScrollTo(int destX, int destY) {
        int scrollX = getScrollX();
        int scrollY = getScrollY();
        int offsetX = destX - scrollX;
        int offsetY = destY - scrollY;
        mScroller.startScroll(scrollX, scrollY, offsetX, offsetY);
        invalidate();
    }

    @Override
    public void computeScroll() {
        if (mScroller.computeScrollOffset()) {
            scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
            postInvalidate();
        }
    }

二、各种滑动方式的对比

上一篇 下一篇

猜你喜欢

热点阅读