OSDN Git Service

Slightly round corners of popup arrow
authorTony <twickham@google.com>
Fri, 14 Apr 2017 18:03:10 +0000 (11:03 -0700)
committerTony Wickham <twickham@google.com>
Mon, 17 Apr 2017 17:25:49 +0000 (10:25 -0700)
Bug: 35766387
Change-Id: I8d2be54c977074dbcf0d5884f44347edd0217bb5

res/values/dimens.xml
src/com/android/launcher3/popup/PopupContainerWithArrow.java

index 0b6100f..dd8c313 100644 (file)
     <dimen name="popup_arrow_horizontal_center">24dp</dimen>
     <!-- popup_arrow_center - popup_arrow_width / 2-->
     <dimen name="popup_arrow_horizontal_offset">19dp</dimen>
+    <dimen name="popup_arrow_corner_radius">2dp</dimen>
     <!-- popup_item_width - icon_size - padding_start - drawable_padding -->
     <dimen name="deep_shortcuts_divider_width">158dp</dimen>
     <dimen name="system_shortcut_icon_size">24dp</dimen>
index 99c7e75..0d16df0 100644 (file)
@@ -26,6 +26,8 @@ import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Color;
+import android.graphics.CornerPathEffect;
+import android.graphics.Paint;
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.ShapeDrawable;
@@ -486,7 +488,11 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra
         } else {
             ShapeDrawable arrowDrawable = new ShapeDrawable(TriangleShape.create(
                     width, height, !mIsAboveIcon));
-            arrowDrawable.getPaint().setColor(Color.WHITE);
+            Paint arrowPaint = arrowDrawable.getPaint();
+            arrowPaint.setColor(Color.WHITE);
+            // The corner path effect won't be reflected in the shadow, but shouldn't be noticeable.
+            int radius = getResources().getDimensionPixelSize(R.dimen.popup_arrow_corner_radius);
+            arrowPaint.setPathEffect(new CornerPathEffect(radius));
             arrowView.setBackground(arrowDrawable);
             arrowView.setElevation(getElevation());
         }