diff options
author | Winson Chung <winsonc@google.com> | 2013-11-06 13:23:29 -0800 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-06-06 00:26:02 -0700 |
commit | ce6ccc71c3a537e5affd54b3047e944e8d0388cc (patch) | |
tree | e39c510e24131593999d63b3375314b20a658b6b /src/com | |
parent | 22d41d5089cd720dd0d53c24ee06341bb8e6108f (diff) | |
download | android_packages_apps_Trebuchet-ce6ccc71c3a537e5affd54b3047e944e8d0388cc.tar.gz android_packages_apps_Trebuchet-ce6ccc71c3a537e5affd54b3047e944e8d0388cc.tar.bz2 android_packages_apps_Trebuchet-ce6ccc71c3a537e5affd54b3047e944e8d0388cc.zip |
Dyanmically lay out overview mode across all orientations and form factors.
Change-Id: I788bbf289717b30b19afc9ad9d611c85715bc623
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher3/DynamicGrid.java | 42 | ||||
-rw-r--r-- | src/com/android/launcher3/PagedView.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 28 |
3 files changed, 59 insertions, 17 deletions
diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java index fd09d4ec3..dbabb1da9 100644 --- a/src/com/android/launcher3/DynamicGrid.java +++ b/src/com/android/launcher3/DynamicGrid.java @@ -89,6 +89,12 @@ class DeviceProfile { int availableHeightPx; int defaultPageSpacingPx; + int overviewModeMinIconZoneHeightPx; + int overviewModeMaxIconZoneHeightPx; + int overviewModeMaxBarWidthPx; + float overviewModeIconZoneRatio; + float overviewModeScaleFactor; + int iconSizePx; int iconTextSizePx; int iconDrawablePaddingPx; @@ -162,6 +168,16 @@ class DeviceProfile { res.getDimensionPixelSize(R.dimen.dynamic_grid_workspace_page_spacing); allAppsCellPaddingPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_all_apps_cell_padding); + overviewModeMinIconZoneHeightPx = + res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_min_icon_zone_height); + overviewModeMaxIconZoneHeightPx = + res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_max_icon_zone_height); + overviewModeMaxBarWidthPx = + res.getDimensionPixelSize(R.dimen.dynamic_grid_overview_bar_max_width); + overviewModeIconZoneRatio = + res.getInteger(R.integer.config_dynamic_grid_overview_icon_zone_percentage) / 100f; + overviewModeScaleFactor = + res.getInteger(R.integer.config_dynamic_grid_overview_scale_percentage) / 100f; // Interpolate the rows for (DeviceProfile p : profiles) { @@ -467,6 +483,20 @@ class DeviceProfile { } } + Rect getOverviewModeButtonBarRect() { + int zoneHeight = (int) (overviewModeIconZoneRatio * availableHeightPx); + zoneHeight = Math.min(overviewModeMaxIconZoneHeightPx, + Math.max(overviewModeMinIconZoneHeightPx, zoneHeight)); + return new Rect(0, availableHeightPx - zoneHeight, 0, availableHeightPx); + } + + float getOverviewModeScale() { + Rect workspacePadding = getWorkspacePadding(); + Rect overviewBar = getOverviewModeButtonBarRect(); + int pageSpace = availableHeightPx - workspacePadding.top - workspacePadding.bottom; + return (overviewModeScaleFactor * (pageSpace - overviewBar.height())) / pageSpace; + } + // The rect returned will be extended to below the system ui that covers the workspace Rect getHotseatRect() { if (isVerticalBarLayout()) { @@ -634,6 +664,7 @@ class DeviceProfile { lp.gravity = Gravity.CENTER; appsCustomize.setLayoutParams(lp); + // Layout AllApps AppsCustomizeLayout host = (AppsCustomizeLayout) launcher.findViewById(R.id.apps_customize_pane); if (host != null) { @@ -672,6 +703,17 @@ class DeviceProfile { pagedView.setWidgetsPageIndicatorPadding(pageIndicatorHeight); } } + + // Layout the Overview Mode +// View overviewMode = launcher.getOverviewPanel(); +// if (overviewMode != null) { +// Rect r = getOverviewModeButtonBarRect(); +// lp = (FrameLayout.LayoutParams) overviewMode.getLayoutParams(); +// lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; +// lp.width = Math.min(availableWidthPx, overviewModeMaxBarWidthPx); +// lp.height = r.height(); +// overviewMode.setLayoutParams(lp); +// } } } diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 7175c7a02..6b8da5a9d 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -799,14 +799,14 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); - // NOTE: We multiply by 1.5f to account for the fact that depending on the offset of the + // NOTE: We multiply by 2f to account for the fact that depending on the offset of the // viewport, we can be at most one and a half screens offset once we scale down DisplayMetrics dm = getResources().getDisplayMetrics(); int maxSize = Math.max(dm.widthPixels + mInsets.left + mInsets.right, dm.heightPixels + mInsets.top + mInsets.bottom); - int parentWidthSize = (int) (1.5f * maxSize); - int parentHeightSize = maxSize; + int parentWidthSize = (int) (2f * maxSize); + int parentHeightSize = (int) (2f * maxSize); int scaledWidthSize, scaledHeightSize; if (mUseMinScale) { scaledWidthSize = (int) (parentWidthSize / mMinScale); diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index f1287aa1d..078d25665 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -186,7 +186,6 @@ public class Workspace extends SmoothPagedView private SpringLoadedDragController mSpringLoadedDragController; private float mSpringLoadedShrinkFactor; private float mOverviewModeShrinkFactor; - private int mOverviewModePageOffset; // State variable that indicates whether the pages are small (ie when you're // in all apps or customize mode) @@ -338,13 +337,13 @@ public class Workspace extends SmoothPagedView mFadeInAdjacentScreens = false; mWallpaperManager = WallpaperManager.getInstance(context); + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0); mSpringLoadedShrinkFactor = res.getInteger(R.integer.config_workspaceSpringLoadShrinkPercentage) / 100.0f; - mOverviewModeShrinkFactor = - res.getInteger(R.integer.config_workspaceOverviewShrinkPercentage) / 100.0f; - mOverviewModePageOffset = res.getDimensionPixelSize(R.dimen.overview_mode_page_offset); + mOverviewModeShrinkFactor = grid.getOverviewModeScale(); mCameraDistance = res.getInteger(R.integer.config_cameraDistance); mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1); mDefaultScreenId = SettingsProvider.getLongCustomDefault(context, @@ -448,10 +447,8 @@ public class Workspace extends SmoothPagedView setClipChildren(false); setClipToPadding(false); setChildrenDrawnWithCacheEnabled(true); - - // This is a bit of a hack to account for the fact that we translate the workspace - // up a bit, and still need to draw the background covering the whole screen. - setMinScale(mOverviewModeShrinkFactor - 0.2f); + + setMinScale(mOverviewModeShrinkFactor); setupLayoutTransition(); final Resources res = getResources(); @@ -2109,14 +2106,17 @@ public class Workspace extends SmoothPagedView } int getOverviewModeTranslationY() { - int childHeight = getNormalChildHeight(); - int viewPortHeight = getViewportHeight(); - int scaledChildHeight = (int) (getOverviewModeScaleY() * childHeight); + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + Rect overviewBar = grid.getOverviewModeButtonBarRect(); - int offset = (viewPortHeight - scaledChildHeight) / 2; - int offsetDelta = mOverviewModePageOffset - offset + mInsets.top; + int availableHeight = getViewportHeight(); + int scaledHeight = (int) (mOverviewModeShrinkFactor * getNormalChildHeight()); + int offsetFromTopEdge = (availableHeight - scaledHeight) / 2; + int offsetToCenterInOverview = (availableHeight - mInsets.top - overviewBar.height() + - scaledHeight) / 2; - return offsetDelta; + return -offsetFromTopEdge + mInsets.top + offsetToCenterInOverview; } float getOverviewModeScaleY() { |