From 32b64217a97db96deeb4872bc2626f64d1c43f1b Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 7 Mar 2018 09:15:12 -0800 Subject: [PATCH] Setting the alpha on the full bitmap for AdaptiveIcon instead of individual layers Test: atest FrameworksCoreTests:AdaptiveIconDrawableTest Bug: 72798522 Change-Id: I3862942bf6f2c4767c293f09ad14725b5f0fbb2b --- .../drawable/AdaptiveIconDrawableTest.java | 30 +++++++++++++++---- .../drawable/AdaptiveIconDrawable.java | 9 ++---- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java b/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java index b28a4b5ae6288..781e343e81394 100644 --- a/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java +++ b/core/tests/coretests/src/android/graphics/drawable/AdaptiveIconDrawableTest.java @@ -1,15 +1,11 @@ package android.graphics.drawable; -import static org.junit.Assert.assertTrue; - import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; -import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Outline; -import android.graphics.Paint; import android.graphics.Path; import android.graphics.Path.Direction; import android.graphics.Rect; @@ -19,10 +15,12 @@ import android.support.test.filters.LargeTest; import android.test.AndroidTestCase; import android.util.Log; import android.util.PathParser; + +import org.junit.Test; + import java.io.File; import java.io.FileOutputStream; import java.util.Arrays; -import org.junit.Test; @LargeTest public class AdaptiveIconDrawableTest extends AndroidTestCase { @@ -173,6 +171,28 @@ public class AdaptiveIconDrawableTest extends AndroidTestCase { assertTrue("outline path should be convex", outline.mPath.isConvex()); } + @Test + public void testSetAlpha() throws Exception { + mIconDrawable = new AdaptiveIconDrawable(mBackgroundDrawable, mForegroundDrawable); + mIconDrawable.setBounds(0, 0, 100, 100); + + Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + + mIconDrawable.draw(canvas); + assertEquals(255, Color.alpha(bitmap.getPixel(50, 50))); + + mIconDrawable.setAlpha(200); + bitmap.eraseColor(Color.TRANSPARENT); + mIconDrawable.draw(canvas); + assertEquals(200, Color.alpha(bitmap.getPixel(50, 50))); + + mIconDrawable.setAlpha(100); + bitmap.eraseColor(Color.TRANSPARENT); + mIconDrawable.draw(canvas); + assertEquals(100, Color.alpha(bitmap.getPixel(50, 50))); + } + // // Utils // diff --git a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java index 1d0cfa5ff0824..fdd638adba81b 100644 --- a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java +++ b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java @@ -44,6 +44,7 @@ import android.util.DisplayMetrics; import android.util.PathParser; import com.android.internal.R; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -668,13 +669,7 @@ public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback @Override public void setAlpha(int alpha) { - final ChildDrawable[] array = mLayerState.mChildren; - for (int i = 0; i < mLayerState.N_CHILDREN; i++) { - final Drawable dr = array[i].mDrawable; - if (dr != null) { - dr.setAlpha(alpha); - } - } + mPaint.setAlpha(alpha); } @Override