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

Commit 0e88baa6 authored by Annie Chin's avatar Annie Chin
Browse files

Animate text colors for drag.

Fixes: 33108158

Change-Id: Idfdae761b4a968990afad9c30f57e4efb9795417
parent b461b20c
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.calculator2;

import android.animation.ArgbEvaluator;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
@@ -27,6 +28,8 @@ public final class DragController {

    private static final String TAG = "DragController";

    private static final ArgbEvaluator mColorEvaluator = new ArgbEvaluator();

    // References to views from the Calculator Display.
    private CalculatorFormula mDisplayFormula;
    private CalculatorResult mDisplayResult;
@@ -42,6 +45,12 @@ public final class DragController {

    private int mDisplayHeight;

    private int mFormulaStartColor;
    private int mFormulaEndColor;

    private int mResultStartColor;
    private int mResultEndColor;

    private boolean mAnimationInitialized;

    private AnimationController mAnimationController;
@@ -78,7 +87,7 @@ public final class DragController {
        mToolbar = toolbar;
    }

    public void animateViews(float yFraction, RecyclerView recyclerView, int itemCount) {
    public void animateViews(float yFraction, RecyclerView recyclerView) {
        final HistoryAdapter.ViewHolder vh = (HistoryAdapter.ViewHolder)
                recyclerView.findViewHolderForAdapterPosition(0);
        if (yFraction > 0) {
@@ -92,6 +101,8 @@ public final class DragController {
            if (!mAnimationInitialized) {
                mAnimationController.initializeScales(formula, result);

                mAnimationController.initializeColorAnimators(formula, result);

                mAnimationController.initializeFormulaTranslationX(formula);

                mAnimationController.initializeFormulaTranslationY(formula, result);
@@ -122,6 +133,12 @@ public final class DragController {
                result.setTranslationX(mAnimationController.getResultTranslationX(yFraction));
                result.setTranslationY(mAnimationController.getResultTranslationY(yFraction));

                formula.setTextColor((int) mColorEvaluator.evaluate(yFraction, mFormulaStartColor,
                        mFormulaEndColor));

                result.setTextColor((int) mColorEvaluator.evaluate(yFraction, mResultStartColor,
                        mResultEndColor));

                date.setTranslationY(mAnimationController.getDateTranslationY(yFraction));
            }
        } else if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
@@ -165,6 +182,8 @@ public final class DragController {

        void initializeDisplayHeight();

        void initializeColorAnimators(AlignedTextView formula, CalculatorResult result);

        void initializeScales(AlignedTextView formula, CalculatorResult result);

        void initializeFormulaTranslationX(AlignedTextView formula);
@@ -205,6 +224,14 @@ public final class DragController {
            // no-op
        }

        public void initializeColorAnimators(AlignedTextView formula, CalculatorResult result) {
            mFormulaStartColor = mDisplayFormula.getCurrentTextColor();
            mFormulaEndColor = formula.getCurrentTextColor();

            mResultStartColor = mDisplayResult.getCurrentTextColor();
            mResultEndColor = result.getCurrentTextColor();
        }

        public void initializeScales(AlignedTextView formula, CalculatorResult result) {
            // Calculate the scale for the text
            mFormulaScale = (mDisplayFormula.getTextSize() * 1.0f) / formula.getTextSize();
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ public class HistoryFragment extends Fragment {

                @Override
                public void whileDragging(float yFraction) {
                    mDragController.animateViews(yFraction, mRecyclerView, mAdapter.getItemCount());
                    mDragController.animateViews(yFraction, mRecyclerView);
                }

                @Override