summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Craik <ccraik@google.com> 2015-12-07 21:51:30 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-12-07 21:51:30 +0000
commitb7f78f385e9db398e10f9649090ef64df6054bfc (patch)
tree569c87ab48ae8e85a2c0af7f71f0e8bffebef109
parent012ce3453f5f7737cae5d6afa1338191e740274f (diff)
parentf3dc7ac7242046d70e4ffee41fd7dbc9b9674ec0 (diff)
Merge "Correct GradientDrawable outline alpha computation"
-rw-r--r--graphics/java/android/graphics/drawable/GradientDrawable.java10
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: