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);
}
网友评论