diff --git a/proguard.flags b/proguard.flags index c563d9e4..16b97a25 100644 --- a/proguard.flags +++ b/proguard.flags @@ -1,2 +1,4 @@ -keep class android.support.design.widget.** { *; } -keep interface android.support.design.widget.** { *; } + +-keep class org.lineageos.updater.ui.FlingBehavior { *; } diff --git a/res/layout/activity_updates.xml b/res/layout/activity_updates.xml index 0dbe17b5..f12e3f83 100644 --- a/res/layout/activity_updates.xml +++ b/res/layout/activity_updates.xml @@ -11,7 +11,8 @@ android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:fitsSystemWindows="true"> + android:fitsSystemWindows="true" + app:layout_behavior="org.lineageos.updater.ui.FlingBehavior"> 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; + } +}