Adjusting grid for tablets and fixing incorrect resources for large tablets.
Change-Id: I4c2a058da934bef14f5be3c53ebda940aeb990ca
This commit is contained in:
parent
33231f587e
commit
59a488ac03
Binary file not shown.
After Width: | Height: | Size: 226 B |
Binary file not shown.
After Width: | Height: | Size: 213 B |
Binary file not shown.
After Width: | Height: | Size: 255 B |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -18,6 +18,4 @@
|
|||
<!-- Workspace -->
|
||||
<!-- Whether or not the drop targets drop down as opposed to fade in -->
|
||||
<bool name="config_useDropTargetDownTransition">false</bool>
|
||||
<!-- Whether or not to fade the side pages -->
|
||||
<bool name="config_workspaceFadeAdjacentScreens">false</bool>
|
||||
</resources>
|
||||
|
|
|
@ -15,7 +15,4 @@
|
|||
-->
|
||||
|
||||
<resources>
|
||||
<!-- Workspace -->
|
||||
<!-- Whether or not to fade the side pages -->
|
||||
<bool name="config_workspaceFadeAdjacentScreens">false</bool>
|
||||
</resources>
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
<!-- Workspace -->
|
||||
<!-- Whether or not the drop targets drop down as opposed to fade in -->
|
||||
<bool name="config_useDropTargetDownTransition">false</bool>
|
||||
<!-- Whether or not to fade the side pages -->
|
||||
<bool name="config_workspaceFadeAdjacentScreens">true</bool>
|
||||
|
||||
<!-- Camera distance for the overscroll effect -->
|
||||
<integer name="config_cameraDistance">18000</integer>
|
||||
|
|
|
@ -52,8 +52,6 @@
|
|||
<!-- Workspace -->
|
||||
<!-- Whether or not the drop targets drop down as opposed to fade in -->
|
||||
<bool name="config_useDropTargetDownTransition">false</bool>
|
||||
<!-- Whether or not to fade the side pages -->
|
||||
<bool name="config_workspaceFadeAdjacentScreens">false</bool>
|
||||
|
||||
<!-- The transition duration for the background of the drop targets -->
|
||||
<integer name="config_dropTargetBgTransitionDuration">0</integer>
|
||||
|
|
|
@ -100,6 +100,7 @@ public class CellLayout extends ViewGroup {
|
|||
private int mForegroundAlpha = 0;
|
||||
private float mBackgroundAlpha;
|
||||
private float mBackgroundAlphaMultiplier = 1.0f;
|
||||
private boolean mDrawBackground = true;
|
||||
|
||||
private Drawable mNormalBackground;
|
||||
private Drawable mActiveGlowBackground;
|
||||
|
@ -387,6 +388,10 @@ public class CellLayout extends ViewGroup {
|
|||
mUseActiveGlowBackground = use;
|
||||
}
|
||||
|
||||
void disableBackground() {
|
||||
mDrawBackground = false;
|
||||
}
|
||||
|
||||
boolean getIsDragOverlapping() {
|
||||
return mIsDragOverlapping;
|
||||
}
|
||||
|
@ -415,7 +420,7 @@ public class CellLayout extends ViewGroup {
|
|||
// When we're small, we are either drawn normally or in the "accepts drops" state (during
|
||||
// a drag). However, we also drag the mini hover background *over* one of those two
|
||||
// backgrounds
|
||||
if (mBackgroundAlpha > 0.0f) {
|
||||
if (mDrawBackground && mBackgroundAlpha > 0.0f) {
|
||||
Drawable bg;
|
||||
|
||||
if (mUseActiveGlowBackground) {
|
||||
|
|
|
@ -119,6 +119,8 @@ public class DeviceProfile {
|
|||
int searchBarHeightPx;
|
||||
int pageIndicatorHeightPx;
|
||||
|
||||
float dragViewScale;
|
||||
|
||||
private ArrayList<DeviceProfileCallbacks> mCallbacks = new ArrayList<DeviceProfileCallbacks>();
|
||||
|
||||
DeviceProfile(String n, float w, float h, float r, float c,
|
||||
|
@ -282,11 +284,12 @@ public class DeviceProfile {
|
|||
|
||||
// Check to see if the icons fit in the new available height. If not, then we need to
|
||||
// shrink the icon size.
|
||||
Rect workspacePadding = getWorkspacePadding();
|
||||
float scale = 1f;
|
||||
int drawablePadding = iconDrawablePaddingOriginalPx;
|
||||
updateIconSize(1f, drawablePadding, resources, dm);
|
||||
float usedHeight = (cellHeightPx * numRows);
|
||||
|
||||
Rect workspacePadding = getWorkspacePadding();
|
||||
int maxHeight = (availableHeightPx - workspacePadding.top - workspacePadding.bottom);
|
||||
if (usedHeight > maxHeight) {
|
||||
scale = maxHeight / usedHeight;
|
||||
|
@ -319,6 +322,8 @@ public class DeviceProfile {
|
|||
FontMetrics fm = textPaint.getFontMetrics();
|
||||
cellWidthPx = iconSizePx;
|
||||
cellHeightPx = iconSizePx + iconDrawablePaddingPx + (int) Math.ceil(fm.bottom - fm.top);
|
||||
final float scaleDps = resources.getDimensionPixelSize(R.dimen.dragViewScale);
|
||||
dragViewScale = (iconSizePx + scaleDps) / iconSizePx;
|
||||
|
||||
// Hotseat
|
||||
hotseatBarHeightPx = iconSizePx + 4 * edgeMarginPx;
|
||||
|
@ -491,17 +496,21 @@ public class DeviceProfile {
|
|||
if (isTablet()) {
|
||||
// Pad the left and right of the workspace to ensure consistent spacing
|
||||
// between all icons
|
||||
float gapScale = 1f + (dragViewScale - 1f) / 2f;
|
||||
int width = (orientation == CellLayout.LANDSCAPE)
|
||||
? Math.max(widthPx, heightPx)
|
||||
: Math.min(widthPx, heightPx);
|
||||
// XXX: If the icon size changes across orientations, we will have to take
|
||||
// that into account here too.
|
||||
int gap = (int) ((width - 2 * edgeMarginPx -
|
||||
(numColumns * cellWidthPx)) / (2 * (numColumns + 1)));
|
||||
padding.set(edgeMarginPx + gap,
|
||||
searchBarBounds.bottom,
|
||||
edgeMarginPx + gap,
|
||||
hotseatBarHeightPx + pageIndicatorHeightPx);
|
||||
int height = (orientation != CellLayout.LANDSCAPE)
|
||||
? Math.max(widthPx, heightPx)
|
||||
: Math.min(widthPx, heightPx);
|
||||
int paddingTop = searchBarBounds.bottom;
|
||||
int paddingBottom = hotseatBarHeightPx + pageIndicatorHeightPx;
|
||||
int availableWidth = Math.max(0, width - (int) ((numColumns * cellWidthPx) +
|
||||
(numColumns * gapScale * cellWidthPx)));
|
||||
int availableHeight = Math.max(0, height - paddingTop - paddingBottom
|
||||
- (int) (2 * numRows * cellHeightPx));
|
||||
padding.set(availableWidth / 2, paddingTop + availableHeight / 2,
|
||||
availableWidth / 2, paddingBottom + availableHeight / 2);
|
||||
} else {
|
||||
// Pad the top and bottom of the workspace with search/hotseat bar sizes
|
||||
padding.set(desiredWorkspaceLeftRightMarginPx - defaultWidgetPadding.left,
|
||||
|
@ -514,8 +523,8 @@ public class DeviceProfile {
|
|||
}
|
||||
|
||||
int getWorkspacePageSpacing(int orientation) {
|
||||
if (orientation == CellLayout.LANDSCAPE &&
|
||||
transposeLayoutWithOrientation) {
|
||||
if ((orientation == CellLayout.LANDSCAPE &&
|
||||
transposeLayoutWithOrientation) || isLargeTablet()) {
|
||||
// In landscape mode the page spacing is set to the default.
|
||||
return defaultPageSpacingPx;
|
||||
} else {
|
||||
|
@ -645,19 +654,12 @@ public class DeviceProfile {
|
|||
lp.height = LayoutParams.MATCH_PARENT;
|
||||
hotseat.findViewById(R.id.layout).setPadding(0, 2 * edgeMarginPx, 0, 2 * edgeMarginPx);
|
||||
} else if (isTablet()) {
|
||||
// Pad the hotseat with the grid gap calculated above
|
||||
int gridGap = (int) ((widthPx - 2 * edgeMarginPx -
|
||||
(numColumns * cellWidthPx)) / (2 * (numColumns + 1)));
|
||||
int gridWidth = (int) ((numColumns * cellWidthPx) +
|
||||
((numColumns - 1) * gridGap));
|
||||
int hotseatGap = (int) Math.max(0,
|
||||
(gridWidth - (numHotseatIcons * hotseatCellWidthPx))
|
||||
/ (numHotseatIcons - 1));
|
||||
// Pad the hotseat with the workspace padding calculated above
|
||||
lp.gravity = Gravity.BOTTOM;
|
||||
lp.width = LayoutParams.MATCH_PARENT;
|
||||
lp.height = hotseatBarHeightPx;
|
||||
hotseat.setPadding(2 * edgeMarginPx + gridGap + hotseatGap, 0,
|
||||
2 * edgeMarginPx + gridGap + hotseatGap,
|
||||
hotseat.setPadding(edgeMarginPx + padding.left, 0,
|
||||
edgeMarginPx + padding.right,
|
||||
2 * edgeMarginPx);
|
||||
} else {
|
||||
// For phones, layout the hotseat without any bottom margin
|
||||
|
|
|
@ -74,10 +74,10 @@ public class DynamicGrid {
|
|||
// 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, 5, 72, 14.4f, 7, 60));
|
||||
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, 5, 80, 14.4f, 7, 64));
|
||||
727, 1207, 5, 6, 76, 14.4f, 7, 64));
|
||||
/*
|
||||
deviceProfiles.add(new DeviceProfile("Nexus 7",
|
||||
600, 960, 5, 5, 72, 14.4f, 5, 60));
|
||||
|
|
|
@ -565,6 +565,7 @@ public class Workspace extends SmoothPagedView
|
|||
public void createCustomContentPage() {
|
||||
CellLayout customScreen = (CellLayout)
|
||||
mLauncher.getLayoutInflater().inflate(R.layout.workspace_screen, null);
|
||||
customScreen.disableBackground();
|
||||
|
||||
mWorkspaceScreens.put(CUSTOM_CONTENT_SCREEN_ID, customScreen);
|
||||
mScreenOrder.add(0, CUSTOM_CONTENT_SCREEN_ID);
|
||||
|
@ -1155,11 +1156,6 @@ public class Workspace extends SmoothPagedView
|
|||
}
|
||||
}
|
||||
|
||||
// Only show page outlines as we pan if we are on large screen
|
||||
if (LauncherAppState.getInstance().isScreenLarge()) {
|
||||
showOutlines();
|
||||
}
|
||||
|
||||
// If we are not fading in adjacent screens, we still need to restore the alpha in case the
|
||||
// user scrolls while we are transitioning (should not affect dispatchDraw optimizations)
|
||||
if (!mWorkspaceFadeInAdjacentScreens) {
|
||||
|
@ -1184,11 +1180,6 @@ public class Workspace extends SmoothPagedView
|
|||
// is under a new page (to scroll to)
|
||||
mDragController.forceTouchMove();
|
||||
}
|
||||
} else {
|
||||
// If we are not mid-dragging, hide the page outlines if we are on a large screen
|
||||
if (LauncherAppState.getInstance().isScreenLarge()) {
|
||||
hideOutlines();
|
||||
}
|
||||
}
|
||||
|
||||
if (mDelayedResizeRunnable != null) {
|
||||
|
|
Loading…
Reference in New Issue