ViewDragHelper恢复到原来的位置上

1.原因:
在使用ViewDragHelper时,在更新ViewDragHelper内部的view状态时候,都会走requestLayout(),导致viewroot树重新 mesure/onlayout/draw ,在layout的时候会把ViewDragHelper的view重新排版,故导致问题。

2.解决:

View mVdhView;
int mVdhXOffset;
int mVdhYOffset;
@Override
public void computeScroll() {

    if (dragHelper.continueSettling(true)) {

        postInvalidateOnAnimation();

    } else {
   mVdhXOffset = mVdhView.getLeft();
        mVdhYOffset = mVdhView.getTop();
    }

}

@Override

protected void onLayout(boolean changed, int left, int top, int right, int bottom) {

    super.onLayout(changed, left, top, right, bottom);

    mVdhView.offsetLeftAndRight(mVdhXOffset);

    mVdhView.offsetTopAndBottom(mVdhYOffset);

}

你可能感兴趣的:(ViewDragHelper恢复到原来的位置上)