OSDN Git Service

DO NOT MERGE Return 1.5 * density as default for large screens.
authorAndrew Flynn <flynn@google.com>
Thu, 23 Feb 2012 23:45:06 +0000 (15:45 -0800)
committerAndrew Flynn <flynn@google.com>
Thu, 23 Feb 2012 23:46:08 +0000 (15:46 -0800)
Change-Id: Ib2d390803f08812636364ceb3849eddf80044072

core/java/android/app/ActivityManager.java

index 4fe9cef..a8ed132 100644 (file)
@@ -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;
         }
 
@@ -1458,7 +1459,9 @@ public class ActivityManager {
             case DisplayMetrics.DENSITY_XHIGH:
                 return DisplayMetrics.DENSITY_MEDIUM * 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 +1474,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;
         }
 
@@ -1489,7 +1493,9 @@ public class ActivityManager {
             case DisplayMetrics.DENSITY_XHIGH:
                 return (size * DisplayMetrics.DENSITY_MEDIUM * 2) / DisplayMetrics.DENSITY_XHIGH;
             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);
         }
     }