From 90bddf0cf8dc2be8ca02a5bb528a51bd8aa1cf7a Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 25 Apr 2019 17:16:53 -0700 Subject: [PATCH] Round thumbnail corners Round the task thumbnail corners as per the mocks by setting the bitmap as a shader. Bug: 114136250 Test: See rounded thumbnails on recents Go Change-Id: I2bf8ebce34deb0d1cb6199cf8f6d5fa6ac746bb8 --- .../res/drawable/default_thumbnail.xml | 2 +- go/quickstep/res/values/dimens.xml | 19 +++++++++++++++++++ .../android/quickstep/ThumbnailDrawable.java | 19 +++++++++++++++++-- .../android/quickstep/views/TaskItemView.java | 3 ++- 4 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 go/quickstep/res/values/dimens.xml diff --git a/go/quickstep/res/drawable/default_thumbnail.xml b/go/quickstep/res/drawable/default_thumbnail.xml index 0a2dbf03de..ab22dcf827 100644 --- a/go/quickstep/res/drawable/default_thumbnail.xml +++ b/go/quickstep/res/drawable/default_thumbnail.xml @@ -18,5 +18,5 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> - + diff --git a/go/quickstep/res/values/dimens.xml b/go/quickstep/res/values/dimens.xml new file mode 100644 index 0000000000..ee154fcafc --- /dev/null +++ b/go/quickstep/res/values/dimens.xml @@ -0,0 +1,19 @@ + + + + 3dp + \ No newline at end of file diff --git a/go/quickstep/src/com/android/quickstep/ThumbnailDrawable.java b/go/quickstep/src/com/android/quickstep/ThumbnailDrawable.java index 6ef9039f68..a8cc0a1b83 100644 --- a/go/quickstep/src/com/android/quickstep/ThumbnailDrawable.java +++ b/go/quickstep/src/com/android/quickstep/ThumbnailDrawable.java @@ -16,17 +16,23 @@ package com.android.quickstep; +import static android.graphics.Shader.TileMode.CLAMP; + +import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; +import com.android.launcher3.R; import com.android.systemui.shared.recents.model.ThumbnailData; /** @@ -39,11 +45,18 @@ public final class ThumbnailDrawable extends Drawable { private final Paint mPaint = new Paint(); private final Matrix mMatrix = new Matrix(); private final ThumbnailData mThumbnailData; + private final BitmapShader mShader; + private final RectF mDestRect = new RectF(); + private final int mCornerRadius; private int mRequestedOrientation; - public ThumbnailDrawable(@NonNull ThumbnailData thumbnailData, int requestedOrientation) { + public ThumbnailDrawable(Resources res, @NonNull ThumbnailData thumbnailData, + int requestedOrientation) { mThumbnailData = thumbnailData; mRequestedOrientation = requestedOrientation; + mCornerRadius = (int) res.getDimension(R.dimen.task_thumbnail_corner_radius); + mShader = new BitmapShader(mThumbnailData.thumbnail, CLAMP, CLAMP); + mPaint.setShader(mShader); updateMatrix(); } @@ -64,12 +77,13 @@ public final class ThumbnailDrawable extends Drawable { if (mThumbnailData.thumbnail == null) { return; } - canvas.drawBitmap(mThumbnailData.thumbnail, mMatrix, mPaint); + canvas.drawRoundRect(mDestRect, mCornerRadius, mCornerRadius, mPaint); } @Override protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); + mDestRect.set(bounds); updateMatrix(); } @@ -125,5 +139,6 @@ public final class ThumbnailDrawable extends Drawable { } // Scale to fill. mMatrix.postScale(scaleX, scaleY); + mShader.setLocalMatrix(mMatrix); } } diff --git a/go/quickstep/src/com/android/quickstep/views/TaskItemView.java b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java index 0b5ed569c8..90192057be 100644 --- a/go/quickstep/src/com/android/quickstep/views/TaskItemView.java +++ b/go/quickstep/src/com/android/quickstep/views/TaskItemView.java @@ -177,7 +177,8 @@ public final class TaskItemView extends LinearLayout { return mDefaultThumbnail; } int orientation = getResources().getConfiguration().orientation; - return new ThumbnailDrawable(thumbnailData, orientation /* requestedOrientation */); + return new ThumbnailDrawable(getResources(), thumbnailData, + orientation /* requestedOrientation */); } private @NonNull String getSafeLabel(@Nullable String label) {