Use PreloadWallpapersLayoutListener again

During refactor, we lost the usage of
PreloadWallpapersLayoutListener which meant we were not
caching wallpaper previews, causing flicker.

Fixes: 133431281

Change-Id: I85bb0a855069f3f2d265d9dba32c43fa28687595
diff --git a/src/com/android/customization/picker/theme/ThemeFragment.java b/src/com/android/customization/picker/theme/ThemeFragment.java
index f0e0cd3..4494347 100644
--- a/src/com/android/customization/picker/theme/ThemeFragment.java
+++ b/src/com/android/customization/picker/theme/ThemeFragment.java
@@ -328,12 +328,15 @@
                     ? res.getDrawable(R.drawable.theme_cover_scrim_custom, activity.getTheme())
                     : res.getDrawable(R.drawable.theme_cover_scrim, activity.getTheme());
 
+            WallpaperPreviewLayoutListener wallpaperListener = new WallpaperPreviewLayoutListener(
+                    theme, previewInfo, coverScrim);
+
             addPage(new ThemeCoverPage(activity, theme.getTitle(),
                     previewInfo.resolveAccentColor(res), previewInfo.icons,
                     previewInfo.headlineFontFamily, previewInfo.bottomSheeetCornerRadius,
                     previewInfo.shapeDrawable, previewInfo.shapeAppIcons, editClickListener,
                     mColorButtonIds, mColorTileIds, mColorTileIconIds, mShapeIconIds,
-                    new WallpaperPreviewLayoutListener(theme, previewInfo, coverScrim)));
+                    wallpaperListener, coverCardLayoutListener));
             addPage(new ThemePreviewPage(activity, R.string.preview_name_font, R.drawable.ic_font,
                     R.layout.preview_card_font_content,
                     previewInfo.resolveAccentColor(res)) {
diff --git a/src/com/android/customization/picker/theme/ThemePreviewPage.java b/src/com/android/customization/picker/theme/ThemePreviewPage.java
index 4d01f9d..abecbd7 100644
--- a/src/com/android/customization/picker/theme/ThemePreviewPage.java
+++ b/src/com/android/customization/picker/theme/ThemePreviewPage.java
@@ -90,7 +90,7 @@
         private final Resources mRes;
         private String mTitle;
         private OnClickListener mEditClickListener;
-        private final OnLayoutChangeListener mListener;
+        private final OnLayoutChangeListener[] mListeners;
         private final int mCornerRadius;
         private final ColorStateList mTintList;
 
@@ -100,7 +100,7 @@
                 List<Drawable> shapeAppIcons,
                 OnClickListener editClickListener,
                 int[] colorButtonIds, int[] colorTileIds, int[][] colorTileIconIds,
-                int[] shapeIconIds, OnLayoutChangeListener wallpaperListener) {
+                int[] shapeIconIds, OnLayoutChangeListener... wallpaperListeners) {
             super(context, 0, 0, R.layout.preview_card_cover_content, accentColor);
             mRes = context.getResources();
             mTitle = title;
@@ -114,7 +114,7 @@
             mColorTileIds = colorTileIds;
             mColorTileIconIds = colorTileIconIds;
             mShapeIconIds = shapeIconIds;
-            mListener = wallpaperListener;
+            mListeners = wallpaperListeners;
             // Color QS icons:
             int controlGreyColor = mRes.getColor(R.color.control_grey, null);
             mTintList = new ColorStateList(
@@ -136,8 +136,14 @@
             if (card == null) {
                 return;
             }
+            if (mListeners != null) {
+                for (OnLayoutChangeListener listener : mListeners) {
+                    if (listener != null) {
+                        card.addOnLayoutChangeListener(listener);
+                    }
+                }
+            }
 
-            card.addOnLayoutChangeListener(mListener);
             if (forceRebind) {
                 card.requestLayout();
             }