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

Commit 5e42a723 authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge changes from topic "am-74dc7dc8-e2ec-493b-90ca-01725fc50357" into ub-launcher3-master

* changes:
  [automerger] Reset the vertical progress when the discovery bounce is closed am: 0bd0244a
  Reset the vertical progress when the discovery bounce is closed
parents a31b4b8c 9d0e7203
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -120,6 +120,12 @@
  *;
}

# Discovery bounce animation
-keep class com.android.launcher3.allapps.DiscoveryBounce$VerticalProgressWrapper {
  public void setProgress(float);
  public float getProgress();
}

# BUG(70852369): Surpress additional warnings after changing from Proguard to R8
-dontwarn android.app.**
-dontwarn android.view.**
+39 −36
Original line number Diff line number Diff line
@@ -24,14 +24,9 @@ import static com.android.launcher3.userevent.nano.LauncherLogProto.ContainerTyp
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
import android.animation.Keyframe;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.TimeInterpolator;
import android.app.ActivityManager;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.animation.PathInterpolator;

import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
@@ -52,21 +47,21 @@ public class DiscoveryBounce extends AbstractFloatingView {
    private final Launcher mLauncher;
    private final Animator mDiscoBounceAnimation;

    public DiscoveryBounce(Launcher launcher, Animator animator) {
    public DiscoveryBounce(Launcher launcher, float delta) {
        super(launcher, null);
        mLauncher = launcher;

        mDiscoBounceAnimation = animator;
        AllAppsTransitionController controller = mLauncher.getAllAppsController();
        mDiscoBounceAnimation.setTarget(controller);
        mDiscoBounceAnimation.addListener(controller.getProgressAnimatorListener());

        mDiscoBounceAnimation =
                AnimatorInflater.loadAnimator(launcher, R.animator.discovery_bounce);
        mDiscoBounceAnimation.setTarget(new VerticalProgressWrapper(controller, delta));
        mDiscoBounceAnimation.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                handleClose(false);
            }
        });
        mDiscoBounceAnimation.addListener(controller.getProgressAnimatorListener());
    }

    @Override
@@ -102,6 +97,9 @@ public class DiscoveryBounce extends AbstractFloatingView {
        if (mIsOpen) {
            mIsOpen = false;
            mLauncher.getDragLayer().removeView(this);
            // Reset the all-apps progress to what ever it was previously.
            mLauncher.getAllAppsController().setProgress(mLauncher.getStateManager()
                    .getState().getVerticalProgress(mLauncher));
        }
    }

@@ -115,6 +113,12 @@ public class DiscoveryBounce extends AbstractFloatingView {
        return (type & TYPE_ON_BOARD_POPUP) != 0;
    }

    private void show(int containerType) {
        mIsOpen = true;
        mLauncher.getDragLayer().addView(this);
        mLauncher.getUserEventDispatcher().logActionBounceTip(containerType);
    }

    public static void showForHomeIfNeeded(Launcher launcher) {
        showForHomeIfNeeded(launcher, true);
    }
@@ -134,11 +138,7 @@ public class DiscoveryBounce extends AbstractFloatingView {
            return;
        }

        DiscoveryBounce view = new DiscoveryBounce(launcher,
                AnimatorInflater.loadAnimator(launcher, R.animator.discovery_bounce));
        view.mIsOpen = true;
        launcher.getDragLayer().addView(view);
        launcher.getUserEventDispatcher().logActionBounceTip(HOTSEAT);
        new DiscoveryBounce(launcher, 0).show(HOTSEAT);
    }

    public static void showForOverviewIfNeeded(Launcher launcher) {
@@ -166,27 +166,30 @@ public class DiscoveryBounce extends AbstractFloatingView {
            return;
        }

        float verticalProgress = OVERVIEW.getVerticalProgress(launcher);
        new DiscoveryBounce(launcher, (1 - OVERVIEW.getVerticalProgress(launcher)))
                .show(PREDICTION);
    }

        TimeInterpolator pathInterpolator = new PathInterpolator(0.35f, 0, 0.5f, 1);
        Keyframe keyframe3 = Keyframe.ofFloat(0.423f, verticalProgress - (1 - 0.9738f));
        keyframe3.setInterpolator(pathInterpolator);
        Keyframe keyframe4 = Keyframe.ofFloat(0.754f, verticalProgress);
        keyframe4.setInterpolator(pathInterpolator);
    /**
     * A wrapper around {@link AllAppsTransitionController} allowing a fixed shift in the value.
     */
    public static class VerticalProgressWrapper {

        private final float mDelta;
        private final AllAppsTransitionController mController;

        private VerticalProgressWrapper(AllAppsTransitionController controller, float delta) {
            mController = controller;
            mDelta = delta;
        }

        PropertyValuesHolder propertyValuesHolder = PropertyValuesHolder.ofKeyframe("progress",
                Keyframe.ofFloat(0, verticalProgress),
                Keyframe.ofFloat(0.246f, verticalProgress), keyframe3, keyframe4,
                Keyframe.ofFloat(1f, verticalProgress));
        ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(null,
                new PropertyValuesHolder[]{propertyValuesHolder});
        animator.setDuration(2166);
        animator.setRepeatCount(5);
        public float getProgress() {
            return mController.getProgress() + mDelta;
        }

        DiscoveryBounce view = new DiscoveryBounce(launcher, animator);
        view.mIsOpen = true;
        launcher.getDragLayer().addView(view);
        launcher.getUserEventDispatcher().logActionBounceTip(PREDICTION);
        public void setProgress(float progress) {
            mController.setProgress(progress - mDelta);
        }
    }

    private static boolean shouldShowForWorkProfile(Launcher launcher) {