美文网首页
ViewDragHelper恢复到原来的位置上

ViewDragHelper恢复到原来的位置上

作者: WangRain1 | 来源:发表于2020-10-21 15:48 被阅读0次

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恢复到原来的位置上

      本文链接:https://www.haomeiwen.com/subject/ovhemktx.html