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

Commit a0b13bdd authored by John Reck's avatar John Reck
Browse files

ViewPropAnimRT fixes

 * Fixes NPE in isNativeInterpolator
 * Fixes null interpolator to mean LinearInterpolator instead of
   the default interpolator which is AccelerateDecelerateInterpolator

 Bug: 15991759

Change-Id: I66ff27154de1e227a07daaebc0519ee3cc0dd38f
parent d907e5b1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -338,7 +338,8 @@ public class ViewPropertyAnimator {
     * By default, the animator uses the default interpolator for ValueAnimator. Calling this method
     * will cause the declared object to be used instead.
     * 
     * @param interpolator The TimeInterpolator to be used for ensuing property animations.
     * @param interpolator The TimeInterpolator to be used for ensuing property animations. A value
     * of <code>null</code> will result in linear interpolation.
     * @return This object, allowing calls to methods in this class to be chained.
     */
    public ViewPropertyAnimator setInterpolator(TimeInterpolator interpolator) {
+8 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package android.view;

import android.animation.TimeInterpolator;
import android.view.ViewPropertyAnimator.NameValuesHolder;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;

import com.android.internal.view.animation.FallbackLUTInterpolator;

@@ -29,6 +31,8 @@ import java.util.ArrayList;
 */
class ViewPropertyAnimatorRT {

    private static final Interpolator sLinearInterpolator = new LinearInterpolator();

    private final View mView;

    private RenderNodeAnimator mAnimators[] = new RenderNodeAnimator[RenderNodeAnimator.LAST_VALUE + 1];
@@ -65,6 +69,10 @@ class ViewPropertyAnimatorRT {
        long startDelay = parent.getStartDelay();
        long duration = parent.getDuration();
        TimeInterpolator interpolator = parent.getInterpolator();
        if (interpolator == null) {
            // Documented to be LinearInterpolator in ValueAnimator.setInterpolator
            interpolator = sLinearInterpolator;
        }
        if (!RenderNodeAnimator.isNativeInterpolator(interpolator)) {
            interpolator = new FallbackLUTInterpolator(interpolator, duration);
        }