diff --git a/core/api/current.txt b/core/api/current.txt index 77829fb5f23a9..838dd55e34d59 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -1100,6 +1100,7 @@ package android { field public static final int presentationTheme = 16843712; // 0x10103c0 field public static final int preserveLegacyExternalStorage = 16844308; // 0x1010614 field public static final int previewImage = 16843482; // 0x10102da + field public static final int previewLayout = 16844327; // 0x1010627 field public static final int primaryContentAlpha = 16844114; // 0x1010552 field public static final int priority = 16842780; // 0x101001c field public static final int privateImeOptions = 16843299; // 0x1010223 @@ -8386,6 +8387,7 @@ package android.appwidget { field public int minResizeWidth; field public int minWidth; field public int previewImage; + field @IdRes public int previewLayout; field public android.content.ComponentName provider; field public int resizeMode; field public int updatePeriodMillis; diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java index e96e22c4764a6..42214d0477405 100644 --- a/core/java/android/appwidget/AppWidgetProviderInfo.java +++ b/core/java/android/appwidget/AppWidgetProviderInfo.java @@ -247,11 +247,28 @@ public class AppWidgetProviderInfo implements Parcelable { * A preview of what the AppWidget will look like after it's configured. * If not supplied, the AppWidget's icon will be used. * - *
This field corresponds to the android:previewImage attribute in
- * the <receiver> element in the AndroidManifest.xml file.
+ *
This field corresponds to the android:previewImage attribute in the AppWidget
+ * meta-data file.
*/
public int previewImage;
+ /**
+ * The layout resource id of a preview of what the AppWidget will look like after it's
+ * configured.
+ *
+ *
Unlike previewImage, previewLayout can better showcase AppWidget in different locales, + * system themes, display sizes & density etc. + * + *
If supplied, this will take precedence over the previewImage on supported widget hosts. + * Otherwise, previewImage will be used. + * + *
This field corresponds to the android:previewLayout attribute in the
+ * AppWidget meta-data file.
+ */
+ @SuppressLint("MutableBareField")
+ @IdRes
+ public int previewLayout;
+
/**
* The rules by which a widget can be resized. See {@link #RESIZE_NONE},
* {@link #RESIZE_NONE}, {@link #RESIZE_HORIZONTAL},
@@ -320,6 +337,7 @@ public class AppWidgetProviderInfo implements Parcelable {
this.label = in.readString();
this.icon = in.readInt();
this.previewImage = in.readInt();
+ this.previewLayout = in.readInt();
this.autoAdvanceViewId = in.readInt();
this.resizeMode = in.readInt();
this.widgetCategory = in.readInt();
@@ -429,6 +447,7 @@ public class AppWidgetProviderInfo implements Parcelable {
out.writeString(this.label);
out.writeInt(this.icon);
out.writeInt(this.previewImage);
+ out.writeInt(this.previewLayout);
out.writeInt(this.autoAdvanceViewId);
out.writeInt(this.resizeMode);
out.writeInt(this.widgetCategory);
@@ -453,6 +472,7 @@ public class AppWidgetProviderInfo implements Parcelable {
that.label = this.label;
that.icon = this.icon;
that.previewImage = this.previewImage;
+ that.previewLayout = this.previewLayout;
that.autoAdvanceViewId = this.autoAdvanceViewId;
that.resizeMode = this.resizeMode;
that.widgetCategory = this.widgetCategory;
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 14df77527a086..e567c3d7d486e 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -7969,9 +7969,17 @@