Let spring take over the overscroll amount when swiping to first/last page.

Bug: 153747836
Change-Id: I8a883f648587b0cb4008df3b8176c9341162b8d1
This commit is contained in:
Jon Miranda
2020-04-10 13:38:14 -07:00
parent 0c0a9ae366
commit 57dab6fa29
3 changed files with 22 additions and 9 deletions

View File

@@ -1069,16 +1069,28 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
}
}
/**
* Returns the amount of overscroll caused by the spring in {@link OverScroller}.
*/
private int getSpringOverScroll(int amount) {
if (mScroller.isSpringing()) {
return amount < 0
? mScroller.getCurrPos()
: Math.max(0, mScroller.getCurrPos() - mMaxScroll);
} else {
return 0;
}
}
protected void dampedOverScroll(int amount) {
mSpringOverScroll = amount;
if (amount == 0) {
return;
}
int size = mOrientationHandler.getMeasuredSize(this);
int overScrollAmount = OverScroll.dampedScroll(amount, size);
mSpringOverScroll = overScrollAmount;
if (mScroller.isSpringing()) {
mSpringOverScroll = getSpringOverScroll(amount);
invalidate();
return;
}
@@ -1090,8 +1102,8 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
}
protected void overScroll(int amount) {
mSpringOverScroll = amount;
if (mScroller.isSpringing()) {
mSpringOverScroll = getSpringOverScroll(amount);
invalidate();
return;
}