Created
September 27, 2017 17:34
-
-
Save flasher297/1a8447850c5198e9673db719f9c5330d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package dk.q8.mobileapp.ui; | |
import android.content.Context; | |
import android.support.design.widget.AppBarLayout; | |
import android.support.design.widget.CoordinatorLayout; | |
import android.support.v7.widget.RecyclerView; | |
import android.util.AttributeSet; | |
import android.view.View; | |
public class FlingBehavior extends AppBarLayout.Behavior { | |
// -- Constants | |
private static final int TOP_CHILD_FLING_THRESHOLD = 3; | |
// -- Variables | |
private boolean isPositive; | |
// -- Construction | |
public FlingBehavior() { | |
} | |
public FlingBehavior(Context context, AttributeSet attrs) { | |
super(context, attrs); | |
} | |
// -- Functions | |
@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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment