summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityManager.java
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2011-01-26 17:22:20 -0800
committerKenny Root <kroot@google.com>2011-01-26 19:43:27 -0800
commit5ef44b7566566db08b62245cbb9002b548071603 (patch)
tree2f188ab727e987f0d9f0b38b3ad7d795bdf879f0 /core/java/android/app/ActivityManager.java
parent0f2e2b8b82c7b589bcc603ce57f8ff3d1c947784 (diff)
Add API for preferred Launcher icon size and density
Applications that create an icon for launcher to use couldn't determine which size or density the icon should be created. Bug: 3224340 Change-Id: Iee96113a4092696a9bd18eecbd2593b38f952a16
Diffstat (limited to 'core/java/android/app/ActivityManager.java')
-rw-r--r--core/java/android/app/ActivityManager.java66
1 files changed, 65 insertions, 1 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 133a7d04003f..d76b67d3ef2a 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -22,6 +22,8 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ConfigurationInfo;
import android.content.pm.IPackageDataObserver;
+import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.Debug;
import android.os.RemoteException;
@@ -30,6 +32,8 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemProperties;
import android.text.TextUtils;
+import android.util.DisplayMetrics;
+
import java.util.List;
/**
@@ -1145,7 +1149,67 @@ public class ActivityManager {
}
return null;
}
-
+
+ /**
+ * Get the preferred density of icons for the launcher. This is used when
+ * custom drawables are created (e.g., for shortcuts).
+ *
+ * @return density in terms of DPI
+ */
+ public int getLauncherLargeIconDensity() {
+ final Resources res = mContext.getResources();
+ final int density = res.getDisplayMetrics().densityDpi;
+
+ if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
+ != Configuration.SCREENLAYOUT_SIZE_XLARGE) {
+ return density;
+ }
+
+ switch (density) {
+ case DisplayMetrics.DENSITY_LOW:
+ return DisplayMetrics.DENSITY_MEDIUM;
+ case DisplayMetrics.DENSITY_MEDIUM:
+ return DisplayMetrics.DENSITY_HIGH;
+ case DisplayMetrics.DENSITY_HIGH:
+ return DisplayMetrics.DENSITY_XHIGH;
+ case DisplayMetrics.DENSITY_XHIGH:
+ return DisplayMetrics.DENSITY_MEDIUM * 2;
+ default:
+ return density;
+ }
+ }
+
+ /**
+ * Get the preferred launcher icon size. This is used when custom drawables
+ * are created (e.g., for shortcuts).
+ *
+ * @return dimensions of square icons in terms of pixels
+ */
+ public int getLauncherLargeIconSize() {
+ final Resources res = mContext.getResources();
+ final int size = res.getDimensionPixelSize(android.R.dimen.app_icon_size);
+
+ if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
+ != Configuration.SCREENLAYOUT_SIZE_XLARGE) {
+ return size;
+ }
+
+ final int density = res.getDisplayMetrics().densityDpi;
+
+ switch (density) {
+ case DisplayMetrics.DENSITY_LOW:
+ return (size * DisplayMetrics.DENSITY_MEDIUM) / DisplayMetrics.DENSITY_LOW;
+ case DisplayMetrics.DENSITY_MEDIUM:
+ return (size * DisplayMetrics.DENSITY_HIGH) / DisplayMetrics.DENSITY_MEDIUM;
+ case DisplayMetrics.DENSITY_HIGH:
+ return (size * DisplayMetrics.DENSITY_XHIGH) / DisplayMetrics.DENSITY_HIGH;
+ case DisplayMetrics.DENSITY_XHIGH:
+ return (size * DisplayMetrics.DENSITY_MEDIUM * 2) / DisplayMetrics.DENSITY_XHIGH;
+ default:
+ return size;
+ }
+ }
+
/**
* Returns "true" if the user interface is currently being messed with
* by a monkey.