summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-11-06 13:23:29 -0800
committerDanesh M <daneshm90@gmail.com>2014-06-06 00:26:02 -0700
commitce6ccc71c3a537e5affd54b3047e944e8d0388cc (patch)
treee39c510e24131593999d63b3375314b20a658b6b /src/com
parent22d41d5089cd720dd0d53c24ee06341bb8e6108f (diff)
downloadandroid_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.java42
-rw-r--r--src/com/android/launcher3/PagedView.java6
-rw-r--r--src/com/android/launcher3/Workspace.java28
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() {