Loading res/xml/default_workspace_5x6.xml→res/xml-sw600dp/default_workspace.xml +0 −0 File moved. View file res/xml/default_workspace_5x5.xml→res/xml-sw720dp/default_workspace.xml +0 −55 Original line number Diff line number Diff line Loading @@ -58,59 +58,4 @@ launcher:y="3" /> <!-- Far-right screen [4] --> <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> <!-- Dialer, Contacts, [All Apps], Messaging, Browser --> <resolve launcher:container="-101" launcher:screen="0" launcher:x="0" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" /> <favorite launcher:uri="tel:123" /> <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" /> <favorite launcher:packageName="com.android.dialer" launcher:className="com.android.dialer.DialtactsActivity" /> </resolve> <favorite launcher:packageName="com.android.contacts" launcher:className="com.android.contacts.activities.PeopleActivity" launcher:container="-101" launcher:screen="1" launcher:x="1" launcher:y="0" /> <resolve launcher:container="-101" launcher:screen="3" launcher:x="3" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> <favorite launcher:uri="sms:" /> <favorite launcher:uri="smsto:" /> <favorite launcher:uri="mms:" /> <favorite launcher:uri="mmsto:" /> <favorite launcher:packageName="com.android.mms" launcher:className="com.android.mms.ui.ConversationList" /> </resolve> <resolve launcher:container="-101" launcher:screen="4" launcher:x="4" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> <favorite launcher:uri="http://www.example.com/" /> <favorite launcher:packageName="com.android.browser" launcher:className="com.android.browser.BrowserActivity" /> </resolve> </favorites> res/xml/default_workspace_4x4.xml→res/xml/default_workspace.xml +0 −0 File moved. View file src/com/android/launcher3/DeviceProfile.java +29 −57 Original line number Diff line number Diff line Loading @@ -43,18 +43,16 @@ import java.util.Comparator; class DeviceProfileQuery { DeviceProfile profile; float widthDps; float heightDps; float value; PointF dimens; DeviceProfileQuery(DeviceProfile p, float v) { widthDps = p.minWidthDps; heightDps = p.minHeightDps; DeviceProfileQuery(float w, float h, float v) { widthDps = w; heightDps = h; value = v; dimens = new PointF(widthDps, heightDps); profile = p; dimens = new PointF(w, h); } } Loading @@ -74,9 +72,6 @@ public class DeviceProfile { private int iconDrawablePaddingOriginalPx; private float hotseatIconSize; int defaultLayoutId; int defaultNoAllAppsLayoutId; boolean isLandscape; boolean isTablet; boolean isLargeTablet; Loading Loading @@ -132,7 +127,7 @@ public class DeviceProfile { private ArrayList<DeviceProfileCallbacks> mCallbacks = new ArrayList<DeviceProfileCallbacks>(); DeviceProfile(String n, float w, float h, float r, float c, float is, float its, float hs, float his, int dlId, int dnalId) { float is, float its, float hs, float his) { // Ensure that we have an odd number of hotseat items (since we need to place all apps) if (!LauncherAppState.isDisableAllApps() && hs % 2 == 0) { throw new RuntimeException("All Device Profiles must have an odd number of hotseat spaces"); Loading @@ -147,8 +142,6 @@ public class DeviceProfile { iconTextSize = its; numHotseatIcons = hs; hotseatIconSize = his; defaultLayoutId = dlId; defaultNoAllAppsLayoutId = dnalId; } DeviceProfile(Context context, Loading Loading @@ -189,32 +182,29 @@ public class DeviceProfile { overviewModeScaleFactor = res.getInteger(R.integer.config_dynamic_grid_overview_scale_percentage) / 100f; // Find the closes profile given the width/height // Interpolate the rows for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, 0f)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numRows)); } DeviceProfile closestProfile = findClosestDeviceProfile(minWidth, minHeight, points); // Snap to the closest row count numRows = closestProfile.numRows; // Snap to the closest column count numColumns = closestProfile.numColumns; // Snap to the closest hotseat size numHotseatIcons = closestProfile.numHotseatIcons; numRows = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); // Interpolate the columns points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numColumns)); } numColumns = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); // Interpolate the hotseat length points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numHotseatIcons)); } numHotseatIcons = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); hotseatAllAppsRank = (int) (numHotseatIcons / 2); // Snap to the closest default layout id defaultLayoutId = closestProfile.defaultLayoutId; // Snap to the closest default no all-apps layout id defaultNoAllAppsLayoutId = closestProfile.defaultNoAllAppsLayoutId; // Interpolate the icon size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.iconSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.iconSize)); } iconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // AllApps uses the original non-scaled icon size Loading @@ -223,7 +213,7 @@ public class DeviceProfile { // Interpolate the icon text size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.iconTextSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.iconTextSize)); } iconTextSize = invDistWeightedInterpolate(minWidth, minHeight, points); iconDrawablePaddingOriginalPx = Loading @@ -234,7 +224,7 @@ public class DeviceProfile { // Interpolate the hotseat icon size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.hotseatIconSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.hotseatIconSize)); } // Hotseat hotseatIconSize = invDistWeightedInterpolate(minWidth, minHeight, points); Loading Loading @@ -408,18 +398,14 @@ public class DeviceProfile { return (float) (1f / Math.pow(d, pow)); } /** Returns the closest device profile given the width and height and a list of profiles */ private DeviceProfile findClosestDeviceProfile(float width, float height, ArrayList<DeviceProfileQuery> points) { return findClosestDeviceProfiles(width, height, points).get(0).profile; } /** Returns the closest device profiles ordered by closeness to the specified width and height */ private ArrayList<DeviceProfileQuery> findClosestDeviceProfiles(float width, float height, private float invDistWeightedInterpolate(float width, float height, ArrayList<DeviceProfileQuery> points) { float sum = 0; float weights = 0; float pow = 5; float kNearestNeighbors = 3; final PointF xy = new PointF(width, height); // Sort the profiles by their closeness to the dimensions ArrayList<DeviceProfileQuery> pointsByNearness = points; Collections.sort(pointsByNearness, new Comparator<DeviceProfileQuery>() { public int compare(DeviceProfileQuery a, DeviceProfileQuery b) { Loading @@ -427,20 +413,6 @@ public class DeviceProfile { } }); return pointsByNearness; } private float invDistWeightedInterpolate(float width, float height, ArrayList<DeviceProfileQuery> points) { float sum = 0; float weights = 0; float pow = 5; float kNearestNeighbors = 3; final PointF xy = new PointF(width, height); ArrayList<DeviceProfileQuery> pointsByNearness = findClosestDeviceProfiles(width, height, points); for (int i = 0; i < pointsByNearness.size(); ++i) { DeviceProfileQuery p = pointsByNearness.get(i); if (i < kNearestNeighbors) { Loading src/com/android/launcher3/DynamicGrid.java +17 −22 Original line number Diff line number Diff line Loading @@ -60,41 +60,36 @@ public class DynamicGrid { DEFAULT_ICON_SIZE_PX = pxFromDp(DEFAULT_ICON_SIZE_DP, dm); // Our phone profiles include the bar sizes in each orientation deviceProfiles.add(new DeviceProfile("Super Short Stubby", 255, 300, 2, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 300, 2, 3, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Shorter Stubby", 255, 400, 3, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 400, 3, 3, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Short Stubby", 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Stubby", 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Nexus S", 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Nexus 4", 335, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 335, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56)); deviceProfiles.add(new DeviceProfile("Nexus 5", 359, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 359, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56)); deviceProfiles.add(new DeviceProfile("Large Phone", 406, 694, 5, 5, 64, 14.4f, 5, 56, R.xml.default_workspace_5x5, R.xml.default_workspace_5x5_no_all_apps)); 406, 694, 5, 5, 64, 14.4f, 5, 56)); // The tablet profile is odd in that the landscape orientation // also includes the nav bar on the side deviceProfiles.add(new DeviceProfile("Nexus 7", 575, 904, 5, 6, 72, 14.4f, 7, 60, R.xml.default_workspace_5x6, R.xml.default_workspace_5x6_no_all_apps)); 575, 904, 5, 6, 72, 14.4f, 7, 60)); // Larger tablet profiles always have system bars on the top & bottom deviceProfiles.add(new DeviceProfile("Nexus 10", 727, 1207, 5, 6, 76, 14.4f, 7, 64, R.xml.default_workspace_5x6, R.xml.default_workspace_5x6_no_all_apps)); 727, 1207, 5, 6, 76, 14.4f, 7, 64)); /* deviceProfiles.add(new DeviceProfile("Nexus 7", 600, 960, 5, 5, 72, 14.4f, 5, 60)); deviceProfiles.add(new DeviceProfile("Nexus 10", 800, 1280, 5, 5, 80, 14.4f, (hasAA ? 7 : 6), 64)); */ deviceProfiles.add(new DeviceProfile("20-inch Tablet", 1527, 2527, 7, 7, 100, 20, 7, 72, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 1527, 2527, 7, 7, 100, 20, 7, 72)); mMinWidth = dpiFromPx(minWidthPx, dm); mMinHeight = dpiFromPx(minHeightPx, dm); mProfile = new DeviceProfile(context, deviceProfiles, Loading Loading
res/xml/default_workspace_5x5.xml→res/xml-sw720dp/default_workspace.xml +0 −55 Original line number Diff line number Diff line Loading @@ -58,59 +58,4 @@ launcher:y="3" /> <!-- Far-right screen [4] --> <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> <!-- Dialer, Contacts, [All Apps], Messaging, Browser --> <resolve launcher:container="-101" launcher:screen="0" launcher:x="0" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" /> <favorite launcher:uri="tel:123" /> <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" /> <favorite launcher:packageName="com.android.dialer" launcher:className="com.android.dialer.DialtactsActivity" /> </resolve> <favorite launcher:packageName="com.android.contacts" launcher:className="com.android.contacts.activities.PeopleActivity" launcher:container="-101" launcher:screen="1" launcher:x="1" launcher:y="0" /> <resolve launcher:container="-101" launcher:screen="3" launcher:x="3" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> <favorite launcher:uri="sms:" /> <favorite launcher:uri="smsto:" /> <favorite launcher:uri="mms:" /> <favorite launcher:uri="mmsto:" /> <favorite launcher:packageName="com.android.mms" launcher:className="com.android.mms.ui.ConversationList" /> </resolve> <resolve launcher:container="-101" launcher:screen="4" launcher:x="4" launcher:y="0" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> <favorite launcher:uri="http://www.example.com/" /> <favorite launcher:packageName="com.android.browser" launcher:className="com.android.browser.BrowserActivity" /> </resolve> </favorites>
src/com/android/launcher3/DeviceProfile.java +29 −57 Original line number Diff line number Diff line Loading @@ -43,18 +43,16 @@ import java.util.Comparator; class DeviceProfileQuery { DeviceProfile profile; float widthDps; float heightDps; float value; PointF dimens; DeviceProfileQuery(DeviceProfile p, float v) { widthDps = p.minWidthDps; heightDps = p.minHeightDps; DeviceProfileQuery(float w, float h, float v) { widthDps = w; heightDps = h; value = v; dimens = new PointF(widthDps, heightDps); profile = p; dimens = new PointF(w, h); } } Loading @@ -74,9 +72,6 @@ public class DeviceProfile { private int iconDrawablePaddingOriginalPx; private float hotseatIconSize; int defaultLayoutId; int defaultNoAllAppsLayoutId; boolean isLandscape; boolean isTablet; boolean isLargeTablet; Loading Loading @@ -132,7 +127,7 @@ public class DeviceProfile { private ArrayList<DeviceProfileCallbacks> mCallbacks = new ArrayList<DeviceProfileCallbacks>(); DeviceProfile(String n, float w, float h, float r, float c, float is, float its, float hs, float his, int dlId, int dnalId) { float is, float its, float hs, float his) { // Ensure that we have an odd number of hotseat items (since we need to place all apps) if (!LauncherAppState.isDisableAllApps() && hs % 2 == 0) { throw new RuntimeException("All Device Profiles must have an odd number of hotseat spaces"); Loading @@ -147,8 +142,6 @@ public class DeviceProfile { iconTextSize = its; numHotseatIcons = hs; hotseatIconSize = his; defaultLayoutId = dlId; defaultNoAllAppsLayoutId = dnalId; } DeviceProfile(Context context, Loading Loading @@ -189,32 +182,29 @@ public class DeviceProfile { overviewModeScaleFactor = res.getInteger(R.integer.config_dynamic_grid_overview_scale_percentage) / 100f; // Find the closes profile given the width/height // Interpolate the rows for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, 0f)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numRows)); } DeviceProfile closestProfile = findClosestDeviceProfile(minWidth, minHeight, points); // Snap to the closest row count numRows = closestProfile.numRows; // Snap to the closest column count numColumns = closestProfile.numColumns; // Snap to the closest hotseat size numHotseatIcons = closestProfile.numHotseatIcons; numRows = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); // Interpolate the columns points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numColumns)); } numColumns = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); // Interpolate the hotseat length points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numHotseatIcons)); } numHotseatIcons = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); hotseatAllAppsRank = (int) (numHotseatIcons / 2); // Snap to the closest default layout id defaultLayoutId = closestProfile.defaultLayoutId; // Snap to the closest default no all-apps layout id defaultNoAllAppsLayoutId = closestProfile.defaultNoAllAppsLayoutId; // Interpolate the icon size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.iconSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.iconSize)); } iconSize = invDistWeightedInterpolate(minWidth, minHeight, points); // AllApps uses the original non-scaled icon size Loading @@ -223,7 +213,7 @@ public class DeviceProfile { // Interpolate the icon text size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.iconTextSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.iconTextSize)); } iconTextSize = invDistWeightedInterpolate(minWidth, minHeight, points); iconDrawablePaddingOriginalPx = Loading @@ -234,7 +224,7 @@ public class DeviceProfile { // Interpolate the hotseat icon size points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p, p.hotseatIconSize)); points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.hotseatIconSize)); } // Hotseat hotseatIconSize = invDistWeightedInterpolate(minWidth, minHeight, points); Loading Loading @@ -408,18 +398,14 @@ public class DeviceProfile { return (float) (1f / Math.pow(d, pow)); } /** Returns the closest device profile given the width and height and a list of profiles */ private DeviceProfile findClosestDeviceProfile(float width, float height, ArrayList<DeviceProfileQuery> points) { return findClosestDeviceProfiles(width, height, points).get(0).profile; } /** Returns the closest device profiles ordered by closeness to the specified width and height */ private ArrayList<DeviceProfileQuery> findClosestDeviceProfiles(float width, float height, private float invDistWeightedInterpolate(float width, float height, ArrayList<DeviceProfileQuery> points) { float sum = 0; float weights = 0; float pow = 5; float kNearestNeighbors = 3; final PointF xy = new PointF(width, height); // Sort the profiles by their closeness to the dimensions ArrayList<DeviceProfileQuery> pointsByNearness = points; Collections.sort(pointsByNearness, new Comparator<DeviceProfileQuery>() { public int compare(DeviceProfileQuery a, DeviceProfileQuery b) { Loading @@ -427,20 +413,6 @@ public class DeviceProfile { } }); return pointsByNearness; } private float invDistWeightedInterpolate(float width, float height, ArrayList<DeviceProfileQuery> points) { float sum = 0; float weights = 0; float pow = 5; float kNearestNeighbors = 3; final PointF xy = new PointF(width, height); ArrayList<DeviceProfileQuery> pointsByNearness = findClosestDeviceProfiles(width, height, points); for (int i = 0; i < pointsByNearness.size(); ++i) { DeviceProfileQuery p = pointsByNearness.get(i); if (i < kNearestNeighbors) { Loading
src/com/android/launcher3/DynamicGrid.java +17 −22 Original line number Diff line number Diff line Loading @@ -60,41 +60,36 @@ public class DynamicGrid { DEFAULT_ICON_SIZE_PX = pxFromDp(DEFAULT_ICON_SIZE_DP, dm); // Our phone profiles include the bar sizes in each orientation deviceProfiles.add(new DeviceProfile("Super Short Stubby", 255, 300, 2, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 300, 2, 3, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Shorter Stubby", 255, 400, 3, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 400, 3, 3, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Short Stubby", 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Stubby", 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Nexus S", 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 5), 48)); deviceProfiles.add(new DeviceProfile("Nexus 4", 335, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 335, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56)); deviceProfiles.add(new DeviceProfile("Nexus 5", 359, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 359, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56)); deviceProfiles.add(new DeviceProfile("Large Phone", 406, 694, 5, 5, 64, 14.4f, 5, 56, R.xml.default_workspace_5x5, R.xml.default_workspace_5x5_no_all_apps)); 406, 694, 5, 5, 64, 14.4f, 5, 56)); // The tablet profile is odd in that the landscape orientation // also includes the nav bar on the side deviceProfiles.add(new DeviceProfile("Nexus 7", 575, 904, 5, 6, 72, 14.4f, 7, 60, R.xml.default_workspace_5x6, R.xml.default_workspace_5x6_no_all_apps)); 575, 904, 5, 6, 72, 14.4f, 7, 60)); // Larger tablet profiles always have system bars on the top & bottom deviceProfiles.add(new DeviceProfile("Nexus 10", 727, 1207, 5, 6, 76, 14.4f, 7, 64, R.xml.default_workspace_5x6, R.xml.default_workspace_5x6_no_all_apps)); 727, 1207, 5, 6, 76, 14.4f, 7, 64)); /* deviceProfiles.add(new DeviceProfile("Nexus 7", 600, 960, 5, 5, 72, 14.4f, 5, 60)); deviceProfiles.add(new DeviceProfile("Nexus 10", 800, 1280, 5, 5, 80, 14.4f, (hasAA ? 7 : 6), 64)); */ deviceProfiles.add(new DeviceProfile("20-inch Tablet", 1527, 2527, 7, 7, 100, 20, 7, 72, R.xml.default_workspace_4x4, R.xml.default_workspace_4x4_no_all_apps)); 1527, 2527, 7, 7, 100, 20, 7, 72)); mMinWidth = dpiFromPx(minWidthPx, dm); mMinHeight = dpiFromPx(minHeightPx, dm); mProfile = new DeviceProfile(context, deviceProfiles, Loading