From bd5294bcb857a48ad22ddd54b13208ec2903c3f6 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 11 Nov 2015 12:51:10 -0500 Subject: [PATCH] Pass densityDpi into RippleComponent, store as densityScale Fixes a regression where the foreground was created against the density in DPI rather than as a scale factor. Bug: 25602850 Change-Id: Ia871aa5def4319682a73228efb599f31b65afdb6 --- .../java/android/graphics/drawable/RippleComponent.java | 7 ++++--- .../java/android/graphics/drawable/RippleDrawable.java | 5 ++--- .../java/android/graphics/drawable/RippleForeground.java | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/graphics/java/android/graphics/drawable/RippleComponent.java b/graphics/java/android/graphics/drawable/RippleComponent.java index 2d378c6c37b6c..e83513c644dbc 100644 --- a/graphics/java/android/graphics/drawable/RippleComponent.java +++ b/graphics/java/android/graphics/drawable/RippleComponent.java @@ -20,6 +20,7 @@ import android.animation.Animator; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; +import android.util.DisplayMetrics; import android.view.DisplayListCanvas; import android.view.RenderNodeAnimator; @@ -50,7 +51,7 @@ abstract class RippleComponent { protected float mTargetRadius; /** Screen density used to adjust pixel-based constants. */ - protected float mDensity; + protected float mDensityScale; /** * If set, force all ripple animations to not run on RenderThread, even if it would be @@ -71,7 +72,7 @@ abstract class RippleComponent { } } - public final void setup(float maxRadius, float density) { + public final void setup(float maxRadius, int densityDpi) { if (maxRadius >= 0) { mHasMaxRadius = true; mTargetRadius = maxRadius; @@ -79,7 +80,7 @@ abstract class RippleComponent { mTargetRadius = getTargetRadius(mBounds); } - mDensity = density; + mDensityScale = densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE; onTargetRadiusChanged(mTargetRadius); } diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index 52e7f24715dfb..aaab5290bec58 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -160,7 +160,7 @@ public class RippleDrawable extends LayerDrawable { private Paint mRipplePaint; /** Target density of the display into which ripples are drawn. */ - private float mDensity = 1.0f; + private int mDensity; /** Whether bounds are being overridden. */ private boolean mOverrideBounds; @@ -544,8 +544,7 @@ public class RippleDrawable extends LayerDrawable { mBackground = new RippleBackground(this, mHotspotBounds, mForceSoftware); } - final float densityScale = mState.mDensity * DisplayMetrics.DENSITY_DEFAULT_SCALE; - mBackground.setup(mState.mMaxRadius, densityScale); + mBackground.setup(mState.mMaxRadius, mDensity); mBackground.enter(focused); } diff --git a/graphics/java/android/graphics/drawable/RippleForeground.java b/graphics/java/android/graphics/drawable/RippleForeground.java index c6608463b04eb..829733e9b0974 100644 --- a/graphics/java/android/graphics/drawable/RippleForeground.java +++ b/graphics/java/android/graphics/drawable/RippleForeground.java @@ -168,7 +168,7 @@ class RippleForeground extends RippleComponent { } final int duration = (int) - (1000 * Math.sqrt(mTargetRadius / WAVE_TOUCH_DOWN_ACCELERATION * mDensity) + 0.5); + (1000 * Math.sqrt(mTargetRadius / WAVE_TOUCH_DOWN_ACCELERATION * mDensityScale) + 0.5); final ObjectAnimator tweenRadius = ObjectAnimator.ofFloat(this, TWEEN_RADIUS, 1); tweenRadius.setAutoCancel(true); @@ -204,7 +204,7 @@ class RippleForeground extends RippleComponent { private int getRadiusExitDuration() { final float remainingRadius = mTargetRadius - getCurrentRadius(); return (int) (1000 * Math.sqrt(remainingRadius / (WAVE_TOUCH_UP_ACCELERATION - + WAVE_TOUCH_DOWN_ACCELERATION) * mDensity) + 0.5); + + WAVE_TOUCH_DOWN_ACCELERATION) * mDensityScale) + 0.5); } private float getCurrentRadius() {