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

Commit 1b4fd74d authored by Justin Klaassen's avatar Justin Klaassen
Browse files

Adopt new ValueAnimator#setCurrentFraction(float) API

Bug: 18471124
Change-Id: Ic39a7dc1b587086ddfcdbb7bda1992c0c2bf55b4
parent 32a4a037
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
@@ -81,39 +81,11 @@ public class AnimatorUtils {

    public static final TypeEvaluator ARGB_EVALUATOR = new ArgbEvaluator();

    private static Method sAnimateValue;
    private static boolean sTryAnimateValue = true;

    public static void setAnimatedFraction(ValueAnimator animator, float fraction) {
        if (sTryAnimateValue) {
            // try to set the animated fraction directly so that it isn't affected by the
            // internal animator scale or time (b/17938711)
            try {
                if (sAnimateValue == null) {
                    sAnimateValue = ValueAnimator.class
                            .getDeclaredMethod("animateValue", float.class);
                    sAnimateValue.setAccessible(true);
                }

                sAnimateValue.invoke(animator, fraction);
                return;
            } catch (NoSuchMethodException|InvocationTargetException|IllegalAccessException e) {
                // something went wrong, don't try that again
                LogUtils.e("Unable to use animateValue directly", e);
                sTryAnimateValue = false;
            }
        }

        // if that doesn't work then just fall back to setting the current play time
        animator.setCurrentPlayTime(Math.round(fraction * animator.getDuration()));
    }

    public static void start(ValueAnimator... animators) {
        for (ValueAnimator animator : animators) {
            final float fraction = animator.getAnimatedFraction();
            if (fraction < 1.0f) {
                animator.start();
                setAnimatedFraction(animator, fraction);
            }
        }
    }
@@ -123,7 +95,6 @@ public class AnimatorUtils {
            final float fraction = animator.getAnimatedFraction();
            if (fraction > 0.0f) {
                animator.reverse();
                setAnimatedFraction(animator, 1.0f - fraction);
            }
        }
    }
+3 −3
Original line number Diff line number Diff line
@@ -381,9 +381,9 @@ public class AlarmActivity extends Activity implements View.OnClickListener, Vie

    private void setAnimatedFractions(float snoozeFraction, float dismissFraction) {
        final float alarmFraction = Math.max(snoozeFraction, dismissFraction);
        AnimatorUtils.setAnimatedFraction(mAlarmAnimator, alarmFraction);
        AnimatorUtils.setAnimatedFraction(mSnoozeAnimator, snoozeFraction);
        AnimatorUtils.setAnimatedFraction(mDismissAnimator, dismissFraction);
        mAlarmAnimator.setCurrentFraction(alarmFraction);
        mSnoozeAnimator.setCurrentFraction(snoozeFraction);
        mDismissAnimator.setCurrentFraction(dismissFraction);
    }

    private float getFraction(float x0, float x1, float x) {