Merge "Use wallpaper colors for widgets in wallpaper change preview" into sc-v2-dev am: a905601cfd am: fe0d2f355c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15054091
Change-Id: Id41419ebed99beffd694214d718b742fb39b0de6
diff --git a/lint-baseline-launcher3.xml b/lint-baseline-launcher3.xml
index 701f316..e90fe33 100644
--- a/lint-baseline-launcher3.xml
+++ b/lint-baseline-launcher3.xml
@@ -584,4 +584,15 @@
column="42"/>
</issue>
+ <issue
+ id="NewApi"
+ message="Call requires API level 31 (current min is 26): `android.appwidget.AppWidgetHostView#setColorResources`"
+ errorLine1=" setColorResources(mWallpaperColorResources);"
+ errorLine2=" ~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/Launcher3/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java"
+ line="528"
+ column="17"/>
+ </issue>
+
</issues>
diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
index a27d5c8..cfb38e5 100644
--- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
+++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
@@ -26,6 +26,7 @@
import android.annotation.TargetApi;
import android.app.Fragment;
+import android.app.WallpaperColors;
import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetProviderInfo;
@@ -42,6 +43,7 @@
import android.os.Looper;
import android.os.Process;
import android.util.AttributeSet;
+import android.util.SparseIntArray;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
@@ -87,6 +89,7 @@
import com.android.launcher3.widget.BaseLauncherAppWidgetHostView;
import com.android.launcher3.widget.LauncherAppWidgetHost;
import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LocalColorExtractor;
import com.android.launcher3.widget.NavigableAppWidgetHostView;
import com.android.launcher3.widget.custom.CustomWidgetManager;
@@ -206,8 +209,12 @@
private final Hotseat mHotseat;
private final CellLayout mWorkspace;
private final AppWidgetHost mAppWidgetHost;
+ private final SparseIntArray mWallpaperColorResources;
- public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp) {
+ public LauncherPreviewRenderer(Context context,
+ InvariantDeviceProfile idp,
+ WallpaperColors wallpaperColors) {
+
super(context);
mUiHandler = new Handler(Looper.getMainLooper());
mContext = context;
@@ -260,9 +267,16 @@
mDp.workspacePadding.right + mDp.cellLayoutPaddingLeftRightPx,
mDp.workspacePadding.bottom);
- mAppWidgetHost = FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()
- ? new LauncherPreviewAppWidgetHost(context)
- : null;
+ if (FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()) {
+ mAppWidgetHost = new LauncherPreviewAppWidgetHost(context);
+ mWallpaperColorResources = wallpaperColors != null
+ ? LocalColorExtractor.newInstance(context)
+ .generateColorsOverride(wallpaperColors)
+ : null;
+ } else {
+ mAppWidgetHost = null;
+ mWallpaperColorResources = null;
+ }
}
/** Populate preview and render it. */
@@ -507,10 +521,12 @@
}
}
- private static class LauncherPreviewAppWidgetHostView extends BaseLauncherAppWidgetHostView {
-
+ private class LauncherPreviewAppWidgetHostView extends BaseLauncherAppWidgetHostView {
private LauncherPreviewAppWidgetHostView(Context context) {
super(context);
+ if (Utilities.ATLEAST_S && mWallpaperColorResources != null) {
+ setColorResources(mWallpaperColorResources);
+ }
}
@Override
diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
index a8c3d15..df49359 100644
--- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
+++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
@@ -209,7 +209,7 @@
if (mDestroyed) {
return;
}
- View view = new LauncherPreviewRenderer(inflationContext, mIdp)
+ View view = new LauncherPreviewRenderer(inflationContext, mIdp, mWallpaperColors)
.getRenderedView(dataModel, widgetProviderInfoMap);
// This aspect scales the view to fit in the surface and centers it
final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(),
diff --git a/src/com/android/launcher3/widget/LocalColorExtractor.java b/src/com/android/launcher3/widget/LocalColorExtractor.java
index 8ae6b2e..23d9e15 100644
--- a/src/com/android/launcher3/widget/LocalColorExtractor.java
+++ b/src/com/android/launcher3/widget/LocalColorExtractor.java
@@ -76,6 +76,14 @@
public void applyColorsOverride(Context base, WallpaperColors colors) { }
/**
+ * Generates color resource overrides from {@link WallpaperColors}.
+ */
+ @Nullable
+ public SparseIntArray generateColorsOverride(WallpaperColors colors) {
+ return null;
+ }
+
+ /**
* Takes a view and returns its rect that can be used by the wallpaper local color extractor.
*
* @param launcher Launcher class class.