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

Commit 39e4b611 authored by Jagrut Desai's avatar Jagrut Desai Committed by Android (Google) Code Review
Browse files

Merge "Refactor TaskbarDividerPopup Open/close animation" into main

parents efc5d812 25cb918a
Loading
Loading
Loading
Loading
+10 −24
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
package com.android.launcher3.taskbar

import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
@@ -197,32 +196,19 @@ constructor(
            mActivityContext.deviceProfile.taskbarIconSize) / 2 + verticalOffsetForPopupView
    }

    override fun animateClose() {
        if (!mIsOpen) {
            return
        }
        if (mOpenCloseAnimator != null) {
            mOpenCloseAnimator.cancel()
        }
        mIsOpen = false

    override fun onCreateCloseAnimation(anim: AnimatorSet?) {
        // If taskbar pinning preference changed insert custom close animation for popup menu.
        if (didPreferenceChange) {
            mOpenCloseAnimator = getCloseAnimator()

        mOpenCloseAnimator.addListener(
            object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator) {
                    mOpenCloseAnimator = null
                    if (mDeferContainerRemoval) {
                        setVisibility(INVISIBLE)
                    } else {
                        closeComplete()
        }
                }
            }
        )
        onCloseCallback(didPreferenceChange)
        onCloseCallback = {}
        mOpenCloseAnimator.start()
    }

    /** Aligning the view pivot to center for animation. */
    override fun setPivotForOpenCloseAnimation() {
        pivotX = measuredWidth / 2f
        pivotY = measuredHeight.toFloat()
    }

    private fun getCloseAnimator(): AnimatorSet {
+12 −4
Original line number Diff line number Diff line
@@ -636,10 +636,10 @@ public abstract class ArrowPopup<T extends Context & ActivityContext>
        return getResources().getDimensionPixelSize(R.dimen.popup_vertical_padding);
    }

    protected AnimatorSet getOpenCloseAnimator(boolean isOpening, int scaleDuration,
            int fadeStartDelay, int fadeDuration, int childFadeStartDelay, int childFadeDuration,
            Interpolator interpolator) {

    /**
     * Sets X and Y pivots for the view animation considering arrow position.
     */
    protected void setPivotForOpenCloseAnimation() {
        int arrowCenter = mArrowOffsetHorizontal + mArrowWidth / 2;
        if (mIsArrowRotated) {
            setPivotX(mIsLeftAligned ? 0f : getMeasuredWidth());
@@ -648,6 +648,14 @@ public abstract class ArrowPopup<T extends Context & ActivityContext>
            setPivotX(mIsLeftAligned ? arrowCenter : getMeasuredWidth() - arrowCenter);
            setPivotY(mIsAboveIcon ? getMeasuredHeight() : 0f);
        }
    }


    protected AnimatorSet getOpenCloseAnimator(boolean isOpening, int scaleDuration,
            int fadeStartDelay, int fadeDuration, int childFadeStartDelay, int childFadeDuration,
            Interpolator interpolator) {

        setPivotForOpenCloseAnimation();

        float[] alphaValues = isOpening ? new float[] {0, 1} : new float[] {1, 0};
        float[] scaleValues = isOpening ? new float[] {0.5f, 1.02f} : new float[] {1f, 0.5f};