天天看點

android coordinatorlayout滑動卡頓,CoordinatorLayout滑動卡頓問題之~~~

大屌推薦之自定義Behavior 方法

public class FlingBehavior extends AppBarLayout.Behavior {

private static final int TOP_CHILD_FLING_THRESHOLD = 3;

private boolean isPositive;

public FlingBehavior() {

}

public FlingBehavior(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, float velocityX, float velocityY, boolean consumed) {

if (velocityY > 0 && !isPositive || velocityY < 0 && isPositive) {

velocityY = velocityY * -1;

}

if (target instanceof RecyclerView && velocityY < 0) {

final RecyclerView recyclerView = (RecyclerView) target;

final View firstChild = recyclerView.getChildAt(0);

final int childAdapterPosition = recyclerView.getChildAdapterPosition(firstChild);

consumed = childAdapterPosition > TOP_CHILD_FLING_THRESHOLD;

}

return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed);

}

@Override

public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed) {

super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed);

isPositive = dy > 0;

}

}

隻能說比之前好一些,但不能完全解決問題,暫時先這樣解決,希望大家有更好的解決方法望告知!

參考:https://www.jianshu.com/p/d0dbbdfa5372