diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-01-25 16:15:43 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-01-25 16:15:43 -0800 |
commit | 52da22f2731cf5f312be9a913295af6638e49595 (patch) | |
tree | 8c1675aaf29a956c1a1edf8b3448fe62dc2d9f8a | |
parent | 3f696b264e4a3dd28421e9e1a58fe2c6241f48e4 (diff) | |
parent | d96e3dfa02b203b1fc826e80d6f9aa074ba9c250 (diff) | |
download | frameworks_base-52da22f2731cf5f312be9a913295af6638e49595.zip frameworks_base-52da22f2731cf5f312be9a913295af6638e49595.tar.gz frameworks_base-52da22f2731cf5f312be9a913295af6638e49595.tar.bz2 |
Merge "Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc."
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | core/java/android/app/ActivityManager.java | 26 | ||||
-rw-r--r-- | core/java/android/util/DisplayMetrics.java | 7 | ||||
-rw-r--r-- | include/utils/ResourceTypes.h | 2 | ||||
-rw-r--r-- | native/include/android/configuration.h | 2 | ||||
-rw-r--r-- | tools/aapt/AaptAssets.cpp | 11 |
6 files changed, 38 insertions, 11 deletions
diff --git a/api/current.txt b/api/current.txt index 0cda862..2eb54fb 100644 --- a/api/current.txt +++ b/api/current.txt @@ -21399,6 +21399,7 @@ package android.util { field public static final int DENSITY_MEDIUM = 160; // 0xa0 field public static final int DENSITY_TV = 213; // 0xd5 field public static final int DENSITY_XHIGH = 320; // 0x140 + field public static final int DENSITY_XXHIGH = 480; // 0x1e0 field public float density; field public int densityDpi; field public int heightPixels; diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 4fe9cef..9661b9e 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1442,9 +1442,10 @@ public class ActivityManager { public int getLauncherLargeIconDensity() { final Resources res = mContext.getResources(); final int density = res.getDisplayMetrics().densityDpi; + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return density; } @@ -1456,9 +1457,13 @@ public class ActivityManager { case DisplayMetrics.DENSITY_HIGH: return DisplayMetrics.DENSITY_XHIGH; case DisplayMetrics.DENSITY_XHIGH: - return DisplayMetrics.DENSITY_MEDIUM * 2; + return DisplayMetrics.DENSITY_XXHIGH; + case DisplayMetrics.DENSITY_XXHIGH: + return DisplayMetrics.DENSITY_XHIGH * 2; default: - return density; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(density*1.5f); } } @@ -1471,9 +1476,10 @@ public class ActivityManager { public int getLauncherLargeIconSize() { final Resources res = mContext.getResources(); final int size = res.getDimensionPixelSize(android.R.dimen.app_icon_size); + final int sw = res.getConfiguration().smallestScreenWidthDp; - if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - != Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (sw < 600) { + // Smaller than approx 7" tablets, use the regular icon size. return size; } @@ -1487,9 +1493,13 @@ public class ActivityManager { 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; + return (size * DisplayMetrics.DENSITY_XXHIGH) / DisplayMetrics.DENSITY_XHIGH; + case DisplayMetrics.DENSITY_XXHIGH: + return (size * DisplayMetrics.DENSITY_XHIGH*2) / DisplayMetrics.DENSITY_XXHIGH; default: - return size; + // The density is some abnormal value. Return some other + // abnormal value that is a reasonable scaling of it. + return (int)(size*1.5f); } } diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index 519b980..a43d36c 100644 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -57,6 +57,13 @@ public class DisplayMetrics { public static final int DENSITY_XHIGH = 320; /** + * Standard quantized DPI for extra-extra-high-density screens. Applications + * should not generally worry about this density; relying on XHIGH graphics + * being scaled up to it should be sufficient for almost all cases. + */ + public static final int DENSITY_XXHIGH = 480; + + /** * The reference density used throughout the system. */ public static final int DENSITY_DEFAULT = DENSITY_MEDIUM; diff --git a/include/utils/ResourceTypes.h b/include/utils/ResourceTypes.h index 46420c1..b741ed6 100644 --- a/include/utils/ResourceTypes.h +++ b/include/utils/ResourceTypes.h @@ -843,6 +843,8 @@ struct ResTable_config DENSITY_MEDIUM = ACONFIGURATION_DENSITY_MEDIUM, DENSITY_TV = ACONFIGURATION_DENSITY_TV, DENSITY_HIGH = ACONFIGURATION_DENSITY_HIGH, + DENSITY_XHIGH = ACONFIGURATION_DENSITY_XHIGH, + DENSITY_XXHIGH = ACONFIGURATION_DENSITY_XXHIGH, DENSITY_NONE = ACONFIGURATION_DENSITY_NONE }; diff --git a/native/include/android/configuration.h b/native/include/android/configuration.h index 4d683fb..06cd3da 100644 --- a/native/include/android/configuration.h +++ b/native/include/android/configuration.h @@ -42,6 +42,8 @@ enum { ACONFIGURATION_DENSITY_MEDIUM = 160, ACONFIGURATION_DENSITY_TV = 213, ACONFIGURATION_DENSITY_HIGH = 240, + ACONFIGURATION_DENSITY_XHIGH = 320, + ACONFIGURATION_DENSITY_XXHIGH = 480, ACONFIGURATION_DENSITY_NONE = 0xffff, ACONFIGURATION_KEYBOARD_ANY = 0x0000, diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp index f0c215e..6ce665b 100644 --- a/tools/aapt/AaptAssets.cpp +++ b/tools/aapt/AaptAssets.cpp @@ -1084,12 +1084,17 @@ bool AaptGroupEntry::getDensityName(const char* name, if (out) out->density = ResTable_config::DENSITY_HIGH; return true; } - + if (strcmp(name, "xhdpi") == 0) { - if (out) out->density = ResTable_config::DENSITY_MEDIUM*2; + if (out) out->density = ResTable_config::DENSITY_XHIGH; return true; } - + + if (strcmp(name, "xxhdpi") == 0) { + if (out) out->density = ResTable_config::DENSITY_XXHIGH; + return true; + } + char* c = (char*)name; while (*c >= '0' && *c <= '9') { c++; |