Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.

Change-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598
This commit is contained in:
Dianne Hackborn
2012-01-25 15:12:23 -08:00
committed by Android Git Automerger
parent 352b8d03c6
commit 84affb8ae6
6 changed files with 38 additions and 11 deletions

View File

@@ -21388,6 +21388,7 @@ package android.util {
field public static final int DENSITY_MEDIUM = 160; // 0xa0 field public static final int DENSITY_MEDIUM = 160; // 0xa0
field public static final int DENSITY_TV = 213; // 0xd5 field public static final int DENSITY_TV = 213; // 0xd5
field public static final int DENSITY_XHIGH = 320; // 0x140 field public static final int DENSITY_XHIGH = 320; // 0x140
field public static final int DENSITY_XXHIGH = 480; // 0x1e0
field public float density; field public float density;
field public int densityDpi; field public int densityDpi;
field public int heightPixels; field public int heightPixels;

View File

@@ -1442,9 +1442,10 @@ public class ActivityManager {
public int getLauncherLargeIconDensity() { public int getLauncherLargeIconDensity() {
final Resources res = mContext.getResources(); final Resources res = mContext.getResources();
final int density = res.getDisplayMetrics().densityDpi; final int density = res.getDisplayMetrics().densityDpi;
final int sw = res.getConfiguration().smallestScreenWidthDp;
if ((res.getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) if (sw < 600) {
!= Configuration.SCREENLAYOUT_SIZE_XLARGE) { // Smaller than approx 7" tablets, use the regular icon size.
return density; return density;
} }
@@ -1456,9 +1457,13 @@ public class ActivityManager {
case DisplayMetrics.DENSITY_HIGH: case DisplayMetrics.DENSITY_HIGH:
return DisplayMetrics.DENSITY_XHIGH; return DisplayMetrics.DENSITY_XHIGH;
case 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: 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() { public int getLauncherLargeIconSize() {
final Resources res = mContext.getResources(); final Resources res = mContext.getResources();
final int size = res.getDimensionPixelSize(android.R.dimen.app_icon_size); 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) if (sw < 600) {
!= Configuration.SCREENLAYOUT_SIZE_XLARGE) { // Smaller than approx 7" tablets, use the regular icon size.
return size; return size;
} }
@@ -1487,9 +1493,13 @@ public class ActivityManager {
case DisplayMetrics.DENSITY_HIGH: case DisplayMetrics.DENSITY_HIGH:
return (size * DisplayMetrics.DENSITY_XHIGH) / DisplayMetrics.DENSITY_HIGH; return (size * DisplayMetrics.DENSITY_XHIGH) / DisplayMetrics.DENSITY_HIGH;
case DisplayMetrics.DENSITY_XHIGH: 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: 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);
} }
} }

View File

@@ -56,6 +56,13 @@ public class DisplayMetrics {
*/ */
public static final int DENSITY_XHIGH = 320; 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. * The reference density used throughout the system.
*/ */

View File

@@ -843,6 +843,8 @@ struct ResTable_config
DENSITY_MEDIUM = ACONFIGURATION_DENSITY_MEDIUM, DENSITY_MEDIUM = ACONFIGURATION_DENSITY_MEDIUM,
DENSITY_TV = ACONFIGURATION_DENSITY_TV, DENSITY_TV = ACONFIGURATION_DENSITY_TV,
DENSITY_HIGH = ACONFIGURATION_DENSITY_HIGH, DENSITY_HIGH = ACONFIGURATION_DENSITY_HIGH,
DENSITY_XHIGH = ACONFIGURATION_DENSITY_XHIGH,
DENSITY_XXHIGH = ACONFIGURATION_DENSITY_XXHIGH,
DENSITY_NONE = ACONFIGURATION_DENSITY_NONE DENSITY_NONE = ACONFIGURATION_DENSITY_NONE
}; };

View File

@@ -42,6 +42,8 @@ enum {
ACONFIGURATION_DENSITY_MEDIUM = 160, ACONFIGURATION_DENSITY_MEDIUM = 160,
ACONFIGURATION_DENSITY_TV = 213, ACONFIGURATION_DENSITY_TV = 213,
ACONFIGURATION_DENSITY_HIGH = 240, ACONFIGURATION_DENSITY_HIGH = 240,
ACONFIGURATION_DENSITY_XHIGH = 320,
ACONFIGURATION_DENSITY_XXHIGH = 480,
ACONFIGURATION_DENSITY_NONE = 0xffff, ACONFIGURATION_DENSITY_NONE = 0xffff,
ACONFIGURATION_KEYBOARD_ANY = 0x0000, ACONFIGURATION_KEYBOARD_ANY = 0x0000,

View File

@@ -1079,12 +1079,17 @@ bool AaptGroupEntry::getDensityName(const char* name,
if (out) out->density = ResTable_config::DENSITY_HIGH; if (out) out->density = ResTable_config::DENSITY_HIGH;
return true; return true;
} }
if (strcmp(name, "xhdpi") == 0) { if (strcmp(name, "xhdpi") == 0) {
if (out) out->density = ResTable_config::DENSITY_MEDIUM*2; if (out) out->density = ResTable_config::DENSITY_XHIGH;
return true; return true;
} }
if (strcmp(name, "xxhdpi") == 0) {
if (out) out->density = ResTable_config::DENSITY_XXHIGH;
return true;
}
char* c = (char*)name; char* c = (char*)name;
while (*c >= '0' && *c <= '9') { while (*c >= '0' && *c <= '9') {
c++; c++;