From 9f6fb354e84b232ffa1db4431e3c5ba870ddfe79 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 26 May 2021 09:20:27 -0700 Subject: [PATCH] Constant sparkle scale Drawables from different themes are yielding different densities. Framework themes are returning 160 (DENSITY_MEDIUM), while AppCompat is reporting 420 (DENSITY_420.) This is causing the sparkles to have completely different sizes on the same device, which is wrong. Fixes: 189236372 Test: manual Change-Id: Ia79e360123cf740aaba85d5348f07604c2b39026 --- graphics/java/android/graphics/drawable/RippleDrawable.java | 2 +- graphics/java/android/graphics/drawable/RippleShader.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index be45f1813a0e6..73e65c2ec0505 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -975,7 +975,7 @@ public class RippleDrawable extends LayerDrawable { shader.setColor(color, effectColor); shader.setOrigin(cx, cy); shader.setTouch(x, y); - shader.setResolution(w, h, mState.mDensity); + shader.setResolution(w, h); shader.setNoisePhase(noisePhase); shader.setRadius(radius); shader.setProgress(.0f); diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java index eb726c1dad342..57b322334867f 100644 --- a/graphics/java/android/graphics/drawable/RippleShader.java +++ b/graphics/java/android/graphics/drawable/RippleShader.java @@ -20,7 +20,6 @@ import android.annotation.ColorInt; import android.graphics.Color; import android.graphics.RuntimeShader; import android.graphics.Shader; -import android.util.DisplayMetrics; final class RippleShader extends RuntimeShader { private static final String SHADER_UNIFORMS = "uniform vec2 in_origin;\n" @@ -204,8 +203,8 @@ final class RippleShader extends RuntimeShader { sparkleColor.green(), sparkleColor.blue(), sparkleColor.alpha()}); } - public void setResolution(float w, float h, int density) { - final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE * 0.8f; + public void setResolution(float w, float h) { + final float densityScale = 2.1f; setUniform("in_resolutionScale", new float[] {1f / w, 1f / h}); setUniform("in_noiseScale", new float[] {densityScale / w, densityScale / h}); }