summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kenny Root <kroot@google.com> 2011-01-26 17:22:20 -0800
committer Kenny Root <kroot@google.com> 2011-01-26 19:43:27 -0800
commit5ef44b7566566db08b62245cbb9002b548071603 (patch)
tree2f188ab727e987f0d9f0b38b3ad7d795bdf879f0
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
-rw-r--r--api/current.xml22
-rw-r--r--core/java/android/app/ActivityManager.java66
2 files changed, 87 insertions, 1 deletions
diff --git a/api/current.xml b/api/current.xml
index 8b9f3812f943..5c3a8e4fa7cb 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -24777,6 +24777,28 @@
visibility="public"
>
</method>
+<method name="getLauncherLargeIconDensity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getLauncherLargeIconSize"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="getMemoryClass"
return="int"
abstract="false"
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.