From 4a0e1b40f36286325ca71c74bce6bc43067b1d8a Mon Sep 17 00:00:00 2001 From: Steven Ng Date: Fri, 4 Jun 2021 12:55:37 +0100 Subject: [PATCH] Include widget padding & boarder spacing in widget preview size estimation Test: Sideload Google dev clock and verify the 5x5 widget preview is rendered correctly. Verify conversation widget preview is rendered correctly in the full widgets picker and priority flow (aka pin widget flow). Bug: 189975670 Change-Id: I4b0212ae347044c970ba40b9b33439448a6aa941 --- .../android/launcher3/widget/WidgetCell.java | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index 7d04d7b404..e1999c9c3a 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -21,6 +21,7 @@ import static com.android.launcher3.Utilities.ATLEAST_S; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.CancellationSignal; @@ -213,12 +214,8 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { return false; } }; - mAppWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, item.widgetInfo); - Rect padding = new Rect(); - mAppWidgetHostViewPreview.getWidgetInset(mActivity.getDeviceProfile(), padding); - mAppWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right, - padding.bottom); - mAppWidgetHostViewPreview.updateAppWidget(/* remoteViews= */ mRemoteViewsPreview); + setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, item.widgetInfo, + mRemoteViewsPreview); return; } @@ -234,16 +231,31 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { // rendering a preview layout for work profile apps yet. For non-work profile layout, a // proper solution is to use RemoteViews(PackageName, LayoutId). launcherAppWidgetProviderInfo.initialLayout = item.widgetInfo.previewLayout; - mAppWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, - launcherAppWidgetProviderInfo); - Rect padding = new Rect(); - mAppWidgetHostViewPreview.getWidgetInset(mActivity.getDeviceProfile(), padding); - mAppWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right, - padding.bottom); - mAppWidgetHostViewPreview.updateAppWidget(/* remoteViews= */ null); + setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, + launcherAppWidgetProviderInfo, /* remoteViews= */ null); } } + private void setAppWidgetHostViewPreview( + NavigableAppWidgetHostView appWidgetHostViewPreview, + LauncherAppWidgetProviderInfo providerInfo, + @Nullable RemoteViews remoteViews) { + appWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, providerInfo); + Rect padding; + DeviceProfile deviceProfile = mActivity.getDeviceProfile(); + if (deviceProfile.shouldInsetWidgets()) { + padding = new Rect(); + appWidgetHostViewPreview.getWidgetInset(deviceProfile, padding); + } else { + padding = deviceProfile.inv.defaultWidgetPadding; + } + appWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right, + padding.bottom); + mPreviewWidth += padding.left + padding.right; + mPreviewHeight += padding.top + padding.bottom; + appWidgetHostViewPreview.updateAppWidget(remoteViews); + } + public WidgetImageView getWidgetView() { return mWidgetImage; } @@ -343,8 +355,11 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener { /** Sets the widget preview image size, in number of cells, and preview scale. */ public void setPreviewSize(int spanX, int spanY, float previewScale) { DeviceProfile deviceProfile = mActivity.getDeviceProfile(); - mPreviewWidth = deviceProfile.cellWidthPx * spanX + mPreviewPadding; - mPreviewHeight = deviceProfile.cellHeightPx * spanY + mPreviewPadding; + Point cellSize = deviceProfile.getCellSize(); + mPreviewWidth = cellSize.x * spanX + mPreviewPadding + + deviceProfile.cellLayoutBorderSpacingPx * (spanX - 1); + mPreviewHeight = cellSize.y * spanY + mPreviewPadding + + deviceProfile.cellLayoutBorderSpacingPx * (spanY - 1); mPreviewScale = previewScale; }