summaryrefslogtreecommitdiff
path: root/core/java/android/appwidget/AppWidgetHostView.java
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2011-09-30 15:02:43 -0700
committerAdam Cohen <adamcohen@google.com>2011-09-30 19:00:00 -0700
commit5d5f3405204ecb5045edc756fde71c97d10bcda4 (patch)
tree84294802ab51ddf3141b4a671df26a2d2dc69a1e /core/java/android/appwidget/AppWidgetHostView.java
parentc8f68e5c7ffef3bc6775edf39a251baf79b81f6b (diff)
Adding default padding to AppWidgetHostView for widgets >= API level 14
Change-Id: Idbbeafba664847f01393bb0c6102f774390380d5
Diffstat (limited to 'core/java/android/appwidget/AppWidgetHostView.java')
-rw-r--r--core/java/android/appwidget/AppWidgetHostView.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index 960d7fbba7e1..761c7eb0863c 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -16,13 +16,17 @@
package android.appwidget;
+import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
@@ -107,6 +111,54 @@ public class AppWidgetHostView extends FrameLayout {
public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
mAppWidgetId = appWidgetId;
mInfo = info;
+
+ // Sometimes the AppWidgetManager returns a null AppWidgetProviderInfo object for
+ // a widget, eg. for some widgets in safe mode.
+ if (info != null) {
+ // We add padding to the AppWidgetHostView if necessary
+ Padding padding = getPaddingForWidget(info.provider);
+ setPadding(padding.left, padding.top, padding.right, padding.bottom);
+ }
+ }
+
+ private static class Padding {
+ int left = 0;
+ int right = 0;
+ int top = 0;
+ int bottom = 0;
+ }
+
+ /**
+ * As of ICE_CREAM_SANDWICH we are automatically adding padding to widgets targeting
+ * ICE_CREAM_SANDWICH and higher. The new widget design guidelines strongly recommend
+ * that widget developers do not add extra padding to their widgets. This will help
+ * achieve consistency among widgets.
+ */
+ private Padding getPaddingForWidget(ComponentName component) {
+ PackageManager packageManager = mContext.getPackageManager();
+ Padding p = new Padding();
+ ApplicationInfo appInfo;
+
+ try {
+ appInfo = packageManager.getApplicationInfo(component.getPackageName(), 0);
+ } catch (Exception e) {
+ // if we can't find the package, return 0 padding
+ return p;
+ }
+
+ if (appInfo.targetSdkVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ Resources r = getResources();
+ p.left = r.getDimensionPixelSize(com.android.internal.
+ R.dimen.default_app_widget_padding_left);
+ p.right = r.getDimensionPixelSize(com.android.internal.
+ R.dimen.default_app_widget_padding_right);
+ p.top = r.getDimensionPixelSize(com.android.internal.
+ R.dimen.default_app_widget_padding_top);
+ p.bottom = r.getDimensionPixelSize(com.android.internal.
+ R.dimen.default_app_widget_padding_bottom);
+ }
+
+ return p;
}
public int getAppWidgetId() {