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 Original line Diff line number Diff line
@@ -30,11 +30,9 @@ import android.view.VelocityTracker;
import android.view.View;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewConfiguration;
import android.view.accessibility.AccessibilityEvent;
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.classifier.FalsingManager;
import com.android.systemui.statusbar.Interpolators;


public class SwipeHelper implements Gefingerpoken {
public class SwipeHelper implements Gefingerpoken {
    static final String TAG = "com.android.systemui.SwipeHelper";
    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 X = 0;
    public static final int Y = 1;
    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 float SWIPE_ESCAPE_VELOCITY = 100f; // dp/sec
    private int DEFAULT_ESCAPE_ANIMATION_DURATION = 200; // ms
    private int DEFAULT_ESCAPE_ANIMATION_DURATION = 200; // ms
    private int MAX_ESCAPE_ANIMATION_DURATION = 400; // ms
    private int MAX_ESCAPE_ANIMATION_DURATION = 400; // ms
@@ -97,8 +92,6 @@ public class SwipeHelper implements Gefingerpoken {
        mPagingTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();
        mPagingTouchSlop = ViewConfiguration.get(context).getScaledPagingTouchSlop();


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

import android.view.animation.Interpolator;
import com.android.systemui.statusbar.Interpolators;


import java.util.ArrayList;
import java.util.ArrayList;


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


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


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


package com.android.systemui.assist;
package com.android.systemui.assist;


import com.android.systemui.R;

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


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


public class AssistOrbContainer extends FrameLayout {
public class AssistOrbContainer extends FrameLayout {


    private static final long EXIT_START_DELAY = 150;
    private static final long EXIT_START_DELAY = 150;


    private final Interpolator mLinearOutSlowInInterpolator;
    private final Interpolator mFastOutLinearInInterpolator;

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


    public AssistOrbContainer(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    public AssistOrbContainer(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, 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
    @Override
@@ -109,12 +101,12 @@ public class AssistOrbContainer extends FrameLayout {
                        .alpha(1f)
                        .alpha(1f)
                        .setDuration(300)
                        .setDuration(300)
                        .setStartDelay(0)
                        .setStartDelay(0)
                        .setInterpolator(mLinearOutSlowInInterpolator);
                        .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
                mNavbarScrim.animate()
                mNavbarScrim.animate()
                        .alpha(1f)
                        .alpha(1f)
                        .setDuration(300)
                        .setDuration(300)
                        .setStartDelay(0)
                        .setStartDelay(0)
                        .setInterpolator(mLinearOutSlowInInterpolator);
                        .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN);
            }
            }
        });
        });
    }
    }
@@ -132,12 +124,12 @@ public class AssistOrbContainer extends FrameLayout {
                .alpha(0f)
                .alpha(0f)
                .setDuration(250)
                .setDuration(250)
                .setStartDelay(EXIT_START_DELAY)
                .setStartDelay(EXIT_START_DELAY)
                .setInterpolator(mFastOutLinearInInterpolator);
                .setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
        mNavbarScrim.animate()
        mNavbarScrim.animate()
                .alpha(0f)
                .alpha(0f)
                .setDuration(250)
                .setDuration(250)
                .setStartDelay(EXIT_START_DELAY)
                .setStartDelay(EXIT_START_DELAY)
                .setInterpolator(mFastOutLinearInInterpolator)
                .setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
                .withEndAction(endRunnable);
                .withEndAction(endRunnable);
    }
    }


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


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


public class AssistOrbView extends FrameLayout {
public class AssistOrbView extends FrameLayout {


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


    private boolean mClipToOutline;
    private boolean mClipToOutline;
@@ -117,10 +115,6 @@ public class AssistOrbView extends FrameLayout {
                R.dimen.assist_orb_travel_distance);
                R.dimen.assist_orb_travel_distance);
        mMaxElevation = context.getResources().getDimensionPixelSize(
        mMaxElevation = context.getResources().getDimensionPixelSize(
                R.dimen.assist_orb_elevation);
                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.setAntiAlias(true);
        mBackgroundPaint.setColor(getResources().getColor(R.color.assist_orb_color));
        mBackgroundPaint.setColor(getResources().getColor(R.color.assist_orb_color));
    }
    }
@@ -256,8 +250,8 @@ public class AssistOrbView extends FrameLayout {
    }
    }


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


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