Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57dab6fa authored by Jon Miranda's avatar Jon Miranda
Browse files

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

Bug: 153747836
Change-Id: I8a883f648587b0cb4008df3b8176c9341162b8d1
parent 0c0a9ae3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -131,8 +131,8 @@
    <item name="dismiss_task_trans_x_damping_ratio" type="dimen" format="float">0.5</item>
    <item name="dismiss_task_trans_x_stiffness" type="dimen" format="float">1500</item>

    <item name="horizontal_spring_damping_ratio" type="dimen" format="float">0.75</item>
    <item name="horizontal_spring_stiffness" type="dimen" format="float">200</item>
    <item name="horizontal_spring_damping_ratio" type="dimen" format="float">0.8</item>
    <item name="horizontal_spring_stiffness" type="dimen" format="float">400</item>

    <item name="swipe_up_rect_scale_damping_ratio" type="dimen" format="float">0.75</item>
    <item name="swipe_up_rect_scale_stiffness" type="dimen" format="float">200</item>
+15 −3
Original line number Diff line number Diff line
@@ -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;
        }
+5 −4
Original line number Diff line number Diff line
@@ -561,10 +561,11 @@ public class OverScroller {
            mStartTime = AnimationUtils.currentAnimationTimeMillis();
            mDuration = duration;

            if (mState == SPRING) {
            if (mSpring != null) {
                mSpring.cancel();
            }

            if (mState == SPRING) {
                mSpring = new SpringAnimation(this, SPRING_PROPERTY);

                ResourceProvider rp = DynamicResource.provider(mContext);
@@ -576,9 +577,9 @@ public class OverScroller {
                mSpring.setStartVelocity(velocity);
                mSpring.animateToFinalPosition(mFinal);
                mSpring.addEndListener((animation, canceled, value, velocity1) -> {
                    mSpring = null;
                    finish();
                    mState = SPLINE;
                    mSpring = null;
                });
            }
            // Unused