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

Commit cc51d2ce authored by Andy Wickham's avatar Andy Wickham Committed by Android (Google) Code Review
Browse files

Merge "Fixes issue where back tutorial animation didn't always appear." into ub-launcher3-rvc-dev

parents e4338129 9f7e4342
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ final class BackGestureTutorialEngagedController extends BackGestureTutorialCont
    @Override
    void transitToController() {
        super.transitToController();
        mHandCoachingAnimation.maybeStartLoopedAnimation(mTutorialTypeInfo.get().getTutorialType());
        mHandCoachingAnimation.startLoopedAnimation(mTutorialTypeInfo.get().getTutorialType());
    }

    @Override
+7 −20
Original line number Diff line number Diff line
@@ -38,8 +38,6 @@ final class BackGestureTutorialHandAnimation {
    private final ImageView mHandCoachingView;
    private final AnimatedVectorDrawable mGestureAnimation;

    private boolean mIsAnimationPlayed = false;

    BackGestureTutorialHandAnimation(Context context, View rootView) {
        mHandCoachingView = rootView.findViewById(
                R.id.back_gesture_tutorial_fragment_hand_coaching);
@@ -47,20 +45,15 @@ final class BackGestureTutorialHandAnimation {
                R.drawable.back_gesture);
    }

    boolean isRunning() {
        return mGestureAnimation.isRunning();
    }

    /**
     * Starts animation if the playground is launched for the first time.
     * [Re]starts animation for the given tutorial.
     */
    void maybeStartLoopedAnimation(TutorialType tutorialType) {
        if (isRunning() || mIsAnimationPlayed) {
            return;
    void startLoopedAnimation(TutorialType tutorialType) {
        if (mGestureAnimation.isRunning()) {
            stop();
        }

        mIsAnimationPlayed = true;
        clearAnimationCallbacks();
        mGestureAnimation.clearAnimationCallbacks();
        mGestureAnimation.registerAnimationCallback(
                new Animatable2.AnimationCallback() {
                    @Override
@@ -78,17 +71,11 @@ final class BackGestureTutorialHandAnimation {
        float rotationY = tutorialType == TutorialType.LEFT_EDGE_BACK_NAVIGATION ? 180f : 0f;
        mHandCoachingView.setRotationY(rotationY);
        mHandCoachingView.setImageDrawable(mGestureAnimation);
        mHandCoachingView.postDelayed(() -> mGestureAnimation.start(),
                ANIMATION_START_DELAY.toMillis());
    }

    private void clearAnimationCallbacks() {
        mGestureAnimation.clearAnimationCallbacks();
        mHandCoachingView.postDelayed(mGestureAnimation::start, ANIMATION_START_DELAY.toMillis());
    }

    void stop() {
        mIsAnimationPlayed = false;
        clearAnimationCallbacks();
        mGestureAnimation.clearAnimationCallbacks();
        mGestureAnimation.stop();
    }
}