diff options
| author | 2015-12-07 21:51:30 +0000 | |
|---|---|---|
| committer | 2015-12-07 21:51:30 +0000 | |
| commit | b7f78f385e9db398e10f9649090ef64df6054bfc (patch) | |
| tree | 569c87ab48ae8e85a2c0af7f71f0e8bffebef109 | |
| parent | 012ce3453f5f7737cae5d6afa1338191e740274f (diff) | |
| parent | f3dc7ac7242046d70e4ffee41fd7dbc9b9674ec0 (diff) | |
Merge "Correct GradientDrawable outline alpha computation"
| -rw-r--r-- | graphics/java/android/graphics/drawable/GradientDrawable.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index 4be86efdefc8..719297a7668c 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -1636,8 +1636,14 @@ public class GradientDrawable extends Drawable { public void getOutline(Outline outline) { final GradientState st = mGradientState; final Rect bounds = getBounds(); - // only report non-zero alpha if shape being drawn is opaque - outline.setAlpha(st.mOpaqueOverShape && isOpaqueForState() ? (mAlpha / 255.0f) : 0.0f); + // only report non-zero alpha if shape being drawn has consistent opacity over shape. Must + // either not have a stroke, or have same stroke/fill opacity + boolean useFillOpacity = st.mOpaqueOverShape && (mGradientState.mStrokeWidth <= 0 + || mStrokePaint == null + || mStrokePaint.getAlpha() == mFillPaint.getAlpha()); + outline.setAlpha(useFillOpacity + ? modulateAlpha(mFillPaint.getAlpha()) / 255.0f + : 0.0f); switch (st.mShape) { case RECTANGLE: |