diff options
| -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: |