From 15ce834e52806378d6ab2b90f573bae14cb3fd4b Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Fri, 29 May 2015 16:23:43 -0700 Subject: Reduce amount of unnecessary RippleDrawable mask redraw Bug: 19638504 Change-Id: Ie7b639c543150e13aec30dfeca2b303d5b601cf3 --- .../android/graphics/drawable/RippleComponent.java | 2 +- .../android/graphics/drawable/RippleDrawable.java | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/drawable/RippleComponent.java b/graphics/java/android/graphics/drawable/RippleComponent.java index 5ba2f93..aa2aa20 100644 --- a/graphics/java/android/graphics/drawable/RippleComponent.java +++ b/graphics/java/android/graphics/drawable/RippleComponent.java @@ -237,7 +237,7 @@ abstract class RippleComponent { } protected final void invalidateSelf() { - mOwner.invalidateSelf(); + mOwner.invalidateSelf(false); } protected final boolean isHardwareAnimating() { diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index f7e8ed0..1af48ca 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -229,7 +229,7 @@ public class RippleDrawable extends LayerDrawable { mExitingRipplesCount = 0; // Always draw an additional "clean" frame after canceling animations. - invalidateSelf(); + invalidateSelf(false); } @Override @@ -364,7 +364,7 @@ public class RippleDrawable extends LayerDrawable { */ public void setColor(ColorStateList color) { mState.mColor = color; - invalidateSelf(); + invalidateSelf(false); } /** @@ -376,7 +376,7 @@ public class RippleDrawable extends LayerDrawable { */ public void setRadius(int radius) { mState.mMaxRadius = radius; - invalidateSelf(); + invalidateSelf(false); } /** @@ -477,7 +477,7 @@ public class RippleDrawable extends LayerDrawable { private void setTargetDensity(DisplayMetrics metrics) { if (mDensity != metrics.density) { mDensity = metrics.density; - invalidateSelf(); + invalidateSelf(false); } } @@ -684,10 +684,17 @@ public class RippleDrawable extends LayerDrawable { @Override public void invalidateSelf() { + invalidateSelf(true); + } + + void invalidateSelf(boolean invalidateMask) { super.invalidateSelf(); - // Force the mask to update on the next draw(). - mHasValidMask = false; + if (invalidateMask) { + // Force the mask to update on the next draw(). + mHasValidMask = false; + } + } private void pruneRipples() { -- cgit v1.1