Added rounded corner to bitmap Widget Preview
This applies to the widget picker and the initial Widget drop.
Bug: 183615331
Test: Manually using top preinstalled widgets
Change-Id: Ib7ce422dc485396c2aceec6f43e83529d642ecc7
diff --git a/src/com/android/launcher3/FastBitmapDrawable.java b/src/com/android/launcher3/FastBitmapDrawable.java
index b1fe4a2..0027a50 100644
--- a/src/com/android/launcher3/FastBitmapDrawable.java
+++ b/src/com/android/launcher3/FastBitmapDrawable.java
@@ -28,6 +28,7 @@
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
+import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@@ -61,6 +62,8 @@
private boolean mIsPressed;
private boolean mIsDisabled;
private float mDisabledAlpha = 1f;
+ private float mRoundedCornersRadius = 0f;
+ private final Path mClipPath = new Path();
// Animator and properties for the fast bitmap drawable's scale
private static final Property<FastBitmapDrawable, Float> SCALE
@@ -102,6 +105,13 @@
@Override
public final void draw(Canvas canvas) {
+ if (mRoundedCornersRadius > 0) {
+ float radius = mRoundedCornersRadius * mScale;
+ mClipPath.reset();
+ mClipPath.addRoundRect(0, 0, getIntrinsicWidth(), getIntrinsicHeight(),
+ radius, radius, Path.Direction.CCW);
+ canvas.clipPath(mClipPath);
+ }
if (mScale != 1f) {
int count = canvas.save();
Rect bounds = getBounds();
@@ -164,6 +174,14 @@
return mScale;
}
+ public void setRoundedCornersRadius(float radius) {
+ mRoundedCornersRadius = radius;
+ }
+
+ public float getRoundedCornersRadius() {
+ return mRoundedCornersRadius;
+ }
+
@Override
public int getIntrinsicWidth() {
return mBitmap.getWidth();