am c901ac9a: am 7593662b: Fix issue with missing row/column on workspace

* commit 'c901ac9a6f41305998789bf9017fb62dc829c05c':
  Fix issue with missing row/column on workspace
This commit is contained in:
Michael Jurka
2011-05-31 10:48:20 -07:00
committed by Android Git Automerger
2 changed files with 14 additions and 56 deletions
-27
View File
@@ -282,33 +282,6 @@ public class CellLayout extends ViewGroup {
return widthGap * (numCells - 1) + cellWidth * numCells + crosshairsSize;
}
static int widthInLandscape(Resources r, int numCells) {
// We use this method from Workspace to figure out how many rows/columns Launcher should
// have. We ignore the left/right padding on CellLayout because it turns out in our design
// the padding extends outside the visible screen size, but it looked fine anyway.
// However, we make sure there's at least enough space for the crosshairs at either
// edge to be rendered (half the crosshair is sticking out on either side)
int cellWidth = r.getDimensionPixelSize(R.dimen.workspace_cell_width);
int widthGap = r.getDimensionPixelSize(R.dimen.workspace_width_gap_land);
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicWidth();
return widthGap * (numCells - 1) + cellWidth * numCells + crosshairsSize;
}
static int heightInPortrait(Resources r, int numCells) {
// We use this method from Workspace to figure out how many rows/columns Launcher should
// have. We ignore the left/right padding on CellLayout because it turns out in our design
// the padding extends outside the visible screen size, but it looked fine anyway.
// However, we make sure there's at least enough space for the crosshairs at the bottom
// to be rendered (half the crosshair is sticking out); we don't worry about the top
// crosshair since it can bleed into the action bar space
int cellHeight = r.getDimensionPixelSize(R.dimen.workspace_cell_height);
int heightGap = r.getDimensionPixelSize(R.dimen.workspace_height_gap_port);
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicHeight();
return heightGap * (numCells - 1) + cellHeight * numCells + (crosshairsSize + 1) / 2;
}
static int heightInLandscape(Resources r, int numCells) {
// We use this method from Workspace to figure out how many rows/columns Launcher should
// have. We ignore the left/right padding on CellLayout because it turns out in our design
+14 -29
View File
@@ -53,7 +53,6 @@ import android.net.Uri;
import android.os.IBinder;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Pair;
import android.view.Display;
@@ -259,42 +258,28 @@ public class Workspace extends SmoothPagedView
R.styleable.Workspace, defStyle, 0);
if (LauncherApplication.isScreenXLarge()) {
// Determine number of rows/columns dynamically
// TODO: This code currently fails on tablets with an aspect ratio < 1.3.
// Around that ratio we should make cells the same size in portrait and
// landscape
final Resources res = context.getResources();
final DisplayMetrics dm = res.getDisplayMetrics();
float widthDp = dm.widthPixels / dm.density;
float heightDp = dm.heightPixels / dm.density;
final float statusBarHeight = res.getDimension(R.dimen.status_bar_height);
TypedArray actionBarSizeTypedArray =
context.obtainStyledAttributes(new int[] { android.R.attr.actionBarSize });
float actionBarHeight = actionBarSizeTypedArray.getDimension(0, 0f);
final float actionBarHeight = actionBarSizeTypedArray.getDimension(0, 0f);
final float systemBarHeight = res.getDimension(R.dimen.status_bar_height);
final float smallestScreenDim = res.getConfiguration().smallestScreenWidthDp;
if (heightDp > widthDp) {
float temp = widthDp;
widthDp = heightDp;
heightDp = temp;
cellCountX = 1;
while (CellLayout.widthInPortrait(res, cellCountX + 1) <= smallestScreenDim) {
cellCountX++;
}
int cellCountXLand = 1;
int cellCountXPort = 1;
while (2*mPageSpacing + CellLayout.widthInLandscape(res, cellCountXLand + 1) <= widthDp) {
cellCountXLand++;
}
while (CellLayout.widthInPortrait(res, cellCountXPort + 1) <= heightDp) {
cellCountXPort++;
}
cellCountX = Math.min(cellCountXLand, cellCountXPort);
int cellCountYLand = 1;
int cellCountYPort = 1;
while (statusBarHeight + actionBarHeight +
CellLayout.heightInLandscape(res, cellCountYLand + 1) <= heightDp) {
cellCountYLand++;
cellCountY = 1;
while (actionBarHeight + CellLayout.heightInLandscape(res, cellCountY + 1)
<= smallestScreenDim - systemBarHeight) {
cellCountY++;
}
while (statusBarHeight + actionBarHeight +
CellLayout.heightInPortrait(res, cellCountYPort + 1) <= widthDp) {
cellCountYPort++;
}
cellCountY = Math.min(cellCountYLand, cellCountYPort);
}
// if the value is manually specified, use that instead