diff options
| author | Adam Cohen <adamcohen@google.com> | 2011-09-30 15:02:43 -0700 |
|---|---|---|
| committer | Adam Cohen <adamcohen@google.com> | 2011-09-30 19:00:00 -0700 |
| commit | 5d5f3405204ecb5045edc756fde71c97d10bcda4 (patch) | |
| tree | 84294802ab51ddf3141b4a671df26a2d2dc69a1e /core/java/android/appwidget/AppWidgetHostView.java | |
| parent | c8f68e5c7ffef3bc6775edf39a251baf79b81f6b (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.java | 52 |
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() { |
