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

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。