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

Commit c18010f6 authored by Selim Cinek's avatar Selim Cinek
Browse files

Refactored the interpolators to use only one single instance

Previously many objects parsed their own interpolators leading
to memory and computational overhead.
This is now unified into a single Static class.

Change-Id: I0537aca0e6dad10a7ffd52ba64b7356b0c5e4672
parent 4fd5dfc1
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -30,11 +30,9 @@ import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;

import com.android.systemui.classifier.FalsingManager;
import com.android.systemui.statusbar.Interpolators;

public class SwipeHelper implements Gefingerpoken {
    static final String TAG = "com.android.systemui.SwipeHelper";
@@ -48,9 +46,6 @@ public class SwipeHelper implements Gefingerpoken {
    public static final int X = 0;
    public static final int Y = 1;

    private static LinearInterpolator sLinearInterpolator = new LinearInterpolator();
    private final Interpolator mFastOutLinearInInterpolator;

    private float SWIPE_ESCAPE_VELOCITY = 100f; // dp/sec
    private int DEFAULT_ESCAPE_ANIMATION_DURATION = 200; // ms
    private int MAX_ESCAPE_ANIMATION_DURATION = 400; // ms
@@ -97,8 +92,6 @@ public class SwipeHelper implements Gefingerpoken {
        mPagingTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();

        mLongPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); // extra long-press!
        mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context,
                android.R.interpolator.fast_out_linear_in);
        mFalsingThreshold = context.getResources().getDimensionPixelSize(
                R.dimen.swipe_helper_falsing_threshold);
        mFalsingManager = FalsingManager.getInstance(context);
@@ -357,9 +350,9 @@ public class SwipeHelper implements Gefingerpoken {
        }
        ObjectAnimator anim = createTranslationAnimation(animView, newPos);
        if (useAccelerateInterpolator) {
            anim.setInterpolator(mFastOutLinearInInterpolator);
            anim.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN);
        } else {
            anim.setInterpolator(sLinearInterpolator);
            anim.setInterpolator(Interpolators.LINEAR);
        }
        anim.setDuration(duration);
        if (delay > 0) {
+3 −6
Original line number Diff line number Diff line
@@ -24,8 +24,8 @@ import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;

import com.android.systemui.statusbar.Interpolators;

import java.util.ArrayList;

@@ -35,7 +35,6 @@ import java.util.ArrayList;
public class ViewInvertHelper {

    private final Paint mDarkPaint = new Paint();
    private final Interpolator mLinearOutSlowInInterpolator;
    private final ColorMatrix mMatrix = new ColorMatrix();
    private final ColorMatrix mGrayscaleMatrix = new ColorMatrix();
    private final long mFadeDuration;
@@ -46,8 +45,6 @@ public class ViewInvertHelper {
        addTarget(v);
    }
    public ViewInvertHelper(Context context, long fadeDuration) {
        mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator(context,
                android.R.interpolator.linear_out_slow_in);
        mFadeDuration = fadeDuration;
    }

@@ -89,7 +86,7 @@ public class ViewInvertHelper {
            }
        });
        animator.setDuration(mFadeDuration);
        animator.setInterpolator(mLinearOutSlowInInterpolator);
        animator.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
        animator.setStartDelay(delay);
        animator.start();
    }
+5 −6
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.systemui.assist;

import com.android.systemui.R;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
@@ -35,6 +33,9 @@ import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;

import com.android.systemui.R;
import com.android.systemui.statusbar.Interpolators;

/**
 * Visually discloses that contextual data was provided to an assistant.
 */
@@ -120,13 +121,11 @@ public class AssistDisclosure {
                    R.interpolator.assist_disclosure_trace));
            mAlphaInAnimator = ValueAnimator.ofInt(0, 255).setDuration(ALPHA_IN_ANIMATION_DURATION);
            mAlphaInAnimator.addUpdateListener(this);
            mAlphaInAnimator.setInterpolator(AnimationUtils.loadInterpolator(mContext,
                    android.R.interpolator.fast_out_slow_in));
            mAlphaInAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
            mAlphaOutAnimator = ValueAnimator.ofInt(255, 0).setDuration(
                    ALPHA_OUT_ANIMATION_DURATION);
            mAlphaOutAnimator.addUpdateListener(this);
            mAlphaOutAnimator.setInterpolator(AnimationUtils.loadInterpolator(mContext,
                    android.R.interpolator.fast_out_linear_in));
            mAlphaOutAnimator.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN);
            mAnimator = new AnimatorSet();
            mAnimator.play(mAlphaInAnimator).with(mTracingAnimator);
            mAnimator.play(mAlphaInAnimator).before(mAlphaOutAnimator);
+5 −13
Original line number Diff line number Diff line
@@ -20,19 +20,15 @@ import android.annotation.Nullable;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;

import com.android.systemui.R;
import com.android.systemui.statusbar.Interpolators;

public class AssistOrbContainer extends FrameLayout {

    private static final long EXIT_START_DELAY = 150;

    private final Interpolator mLinearOutSlowInInterpolator;
    private final Interpolator mFastOutLinearInInterpolator;

    private View mScrim;
    private View mNavbarScrim;
    private AssistOrbView mOrb;
@@ -49,10 +45,6 @@ public class AssistOrbContainer extends FrameLayout {

    public AssistOrbContainer(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator(context,
                android.R.interpolator.linear_out_slow_in);
        mFastOutLinearInInterpolator = AnimationUtils.loadInterpolator(context,
                android.R.interpolator.fast_out_slow_in);
    }

    @Override
@@ -109,12 +101,12 @@ public class AssistOrbContainer extends FrameLayout {
                        .alpha(1f)
                        .setDuration(300)
                        .setStartDelay(0)
                        .setInterpolator(mLinearOutSlowInInterpolator);
                        .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
                mNavbarScrim.animate()
                        .alpha(1f)
                        .setDuration(300)
                        .setStartDelay(0)
                        .setInterpolator(mLinearOutSlowInInterpolator);
                        .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
            }
        });
    }
@@ -132,12 +124,12 @@ public class AssistOrbContainer extends FrameLayout {
                .alpha(0f)
                .setDuration(250)
                .setStartDelay(EXIT_START_DELAY)
                .setInterpolator(mFastOutLinearInInterpolator);
                .setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
        mNavbarScrim.animate()
                .alpha(0f)
                .setDuration(250)
                .setStartDelay(EXIT_START_DELAY)
                .setInterpolator(mFastOutLinearInInterpolator)
                .setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
                .withEndAction(endRunnable);
    }

+4 −10
Original line number Diff line number Diff line
@@ -27,13 +27,13 @@ import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.android.systemui.R;
import com.android.systemui.statusbar.Interpolators;

public class AssistOrbView extends FrameLayout {

@@ -43,8 +43,6 @@ public class AssistOrbView extends FrameLayout {
    private final Paint mBackgroundPaint = new Paint();
    private final Rect mCircleRect = new Rect();
    private final Rect mStaticRect = new Rect();
    private final Interpolator mAppearInterpolator;
    private final Interpolator mDisappearInterpolator;
    private final Interpolator mOvershootInterpolator = new OvershootInterpolator();

    private boolean mClipToOutline;
@@ -117,10 +115,6 @@ public class AssistOrbView extends FrameLayout {
                R.dimen.assist_orb_travel_distance);
        mMaxElevation = context.getResources().getDimensionPixelSize(
                R.dimen.assist_orb_elevation);
        mAppearInterpolator = AnimationUtils.loadInterpolator(mContext,
                android.R.interpolator.linear_out_slow_in);
        mDisappearInterpolator = AnimationUtils.loadInterpolator(mContext,
                android.R.interpolator.fast_out_linear_in);
        mBackgroundPaint.setAntiAlias(true);
        mBackgroundPaint.setColor(getResources().getColor(R.color.assist_orb_color));
    }
@@ -256,8 +250,8 @@ public class AssistOrbView extends FrameLayout {
    }

    public void startExitAnimation(long delay) {
        animateCircleSize(0, 200, delay, mDisappearInterpolator);
        animateOffset(0, 200, delay, mDisappearInterpolator);
        animateCircleSize(0, 200, delay, Interpolators.FAST_OUT_LINEAR_IN);
        animateOffset(0, 200, delay, Interpolators.FAST_OUT_LINEAR_IN);
    }

    public void startEnterAnimation() {
@@ -266,7 +260,7 @@ public class AssistOrbView extends FrameLayout {
            @Override
            public void run() {
                animateCircleSize(mCircleMinSize, 300, 0 /* delay */, mOvershootInterpolator);
                animateOffset(mStaticOffset, 400, 0 /* delay */, mAppearInterpolator);
                animateOffset(mStaticOffset, 400, 0 /* delay */, Interpolators.LINEAR_OUT_SLOW_IN);
            }
        });
    }
Loading