Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ChromeAnimation.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ChromeAnimation.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ChromeAnimation.java |
| index 5933a66a8e46883d77b32d6ee32565aec3c7377a..be825b1363c00e843ea2f97b8b588c39289225e8 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ChromeAnimation.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ChromeAnimation.java |
| @@ -4,12 +4,17 @@ |
| package org.chromium.chrome.browser.compositor.layouts; |
| +import android.annotation.TargetApi; |
| +import android.os.Build; |
| import android.os.SystemClock; |
| +import android.provider.Settings; |
| import android.view.animation.AccelerateInterpolator; |
| import android.view.animation.DecelerateInterpolator; |
| import android.view.animation.Interpolator; |
| import android.view.animation.LinearInterpolator; |
| +import org.chromium.base.ContextUtils; |
| + |
| import java.util.ArrayList; |
| import java.util.concurrent.atomic.AtomicBoolean; |
| @@ -31,9 +36,10 @@ public class ChromeAnimation<T> { |
| private static final int FIRST_FRAME_OFFSET_MS = 1000 / 60; |
| /** |
| - * Can be used to slow down created animations for debugging purposes. |
| + * Multiplier for animation durations for debugging. Can be set in Developer Options and cached |
| + * here. |
| */ |
| - private static final int ANIMATION_MULTIPLIER = 1; |
| + private static Float sAnimationMultiplier; |
|
mdjones
2017/03/15 20:50:38
I'm guessing this can't be final because it is set
Bernhard Bauer
2017/03/15 21:21:58
It's static, so it would have to be set when the c
mdjones
2017/03/15 22:13:12
Ah right. I think what you have is fine.
|
| private final AtomicBoolean mFinishCalled = new AtomicBoolean(); |
| private final ArrayList<Animation<T>> mAnimations = new ArrayList<Animation<T>>(); |
| @@ -256,11 +262,26 @@ public class ChromeAnimation<T> { |
| mAnimatedObject = t; |
| mStart = start; |
| mEnd = end; |
| - mDuration = duration * ANIMATION_MULTIPLIER; |
| - mStartDelay = startTime * ANIMATION_MULTIPLIER; |
| + float animationMultiplier = getAnimationMultiplier(); |
| + mDuration = (long) (duration * animationMultiplier); |
| + mStartDelay = (long) (startTime * animationMultiplier); |
| mCurrentTime = 0; |
| } |
| + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) |
| + private float getAnimationMultiplier() { |
| + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) return 1f; |
| + |
| + synchronized (sLock) { |
| + if (sAnimationMultiplier == null) { |
| + sAnimationMultiplier = Settings.Global.getFloat( |
| + ContextUtils.getApplicationContext().getContentResolver(), |
| + Settings.Global.ANIMATOR_DURATION_SCALE, 1f); |
| + } |
| + return sAnimationMultiplier; |
| + } |
| + } |
| + |
| /** |
| * Returns the object being animated. |
| */ |