summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable-hdpi/ic_setting.pngbin2637 -> 3282 bytes
-rw-r--r--res/drawable-hdpi/ic_setting_pressed.pngbin3099 -> 3642 bytes
-rw-r--r--res/drawable-mdpi/ic_setting.pngbin1669 -> 2065 bytes
-rw-r--r--res/drawable-mdpi/ic_setting_pressed.pngbin1868 -> 2182 bytes
-rw-r--r--res/drawable-xhdpi/ic_setting.pngbin3625 -> 4499 bytes
-rw-r--r--res/drawable-xhdpi/ic_setting_pressed.pngbin4524 -> 5300 bytes
-rw-r--r--res/drawable-xxhdpi/ic_setting.pngbin4105 -> 4512 bytes
-rw-r--r--res/drawable-xxhdpi/ic_setting_pressed.pngbin7113 -> 7627 bytes
-rw-r--r--res/layout-land/launcher.xml13
-rw-r--r--res/layout/overview_panel.xml16
-rw-r--r--res/values/config.xml6
-rw-r--r--res/values/dimens.xml6
-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
15 files changed, 72 insertions, 45 deletions
diff --git a/res/drawable-hdpi/ic_setting.png b/res/drawable-hdpi/ic_setting.png
index c617154f1..3f5bc43fd 100644
--- a/res/drawable-hdpi/ic_setting.png
+++ b/res/drawable-hdpi/ic_setting.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_setting_pressed.png b/res/drawable-hdpi/ic_setting_pressed.png
index fb58a4b12..9201064cf 100644
--- a/res/drawable-hdpi/ic_setting_pressed.png
+++ b/res/drawable-hdpi/ic_setting_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_setting.png b/res/drawable-mdpi/ic_setting.png
index 0c8ae9d65..1e7645953 100644
--- a/res/drawable-mdpi/ic_setting.png
+++ b/res/drawable-mdpi/ic_setting.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_setting_pressed.png b/res/drawable-mdpi/ic_setting_pressed.png
index 846091f58..d7aca18e1 100644
--- a/res/drawable-mdpi/ic_setting_pressed.png
+++ b/res/drawable-mdpi/ic_setting_pressed.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_setting.png b/res/drawable-xhdpi/ic_setting.png
index 91ba98c55..6f06bcfd9 100644
--- a/res/drawable-xhdpi/ic_setting.png
+++ b/res/drawable-xhdpi/ic_setting.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_setting_pressed.png b/res/drawable-xhdpi/ic_setting_pressed.png
index 08aafc405..bca8ccdd0 100644
--- a/res/drawable-xhdpi/ic_setting_pressed.png
+++ b/res/drawable-xhdpi/ic_setting_pressed.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_setting.png b/res/drawable-xxhdpi/ic_setting.png
index 6e1e6627c..b3729d315 100644
--- a/res/drawable-xxhdpi/ic_setting.png
+++ b/res/drawable-xxhdpi/ic_setting.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_setting_pressed.png b/res/drawable-xxhdpi/ic_setting_pressed.png
index a202a40fe..5c9c1be44 100644
--- a/res/drawable-xxhdpi/ic_setting_pressed.png
+++ b/res/drawable-xxhdpi/ic_setting_pressed.png
Binary files differ
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index bf670d4a4..abb19f4bb 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -77,19 +77,6 @@
android:layout_height="match_parent"
android:visibility="gone" />
- <!-- TODO: Fix
- <com.android.launcher3.DrawableStateProxyView
- android:id="@+id/voice_button_proxy"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_gravity="top|start"
- android:layout_marginTop="64dp"
- android:clickable="true"
- android:onClick="onClickVoiceButton"
- android:importantForAccessibility="no"
- launcher:sourceViewId="@+id/voice_button" />
- -->
-
<include layout="@layout/apps_customize_pane"
android:id="@+id/apps_customize_pane"
android:layout_width="match_parent"
diff --git a/res/layout/overview_panel.xml b/res/layout/overview_panel.xml
index e36004c4b..558900c7d 100644
--- a/res/layout/overview_panel.xml
+++ b/res/layout/overview_panel.xml
@@ -13,18 +13,18 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<LinearLayout
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
android:layout_gravity="center_horizontal|bottom"
- android:paddingBottom="@dimen/overview_panel_bottom_padding">
+ android:orientation="horizontal">
<TextView
android:id="@+id/wallpaper_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_gravity="start|top"
android:text="@string/wallpaper_button_text"
android:drawablePadding="4dp"
android:drawableTop="@drawable/wallpaper_button"
@@ -32,13 +32,11 @@
android:fontFamily="sans-serif-condensed"
android:textAllCaps="true"
android:textSize="12sp" />
- <Space
- android:layout_width="@dimen/overview_panel_buttonSpacing"
- android:layout_height="wrap_content"/>
<TextView
android:id="@+id/widget_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal|top"
android:text="@string/widget_button_text"
android:drawablePadding="4dp"
android:gravity="center_horizontal"
@@ -46,13 +44,11 @@
android:fontFamily="sans-serif-condensed"
android:textAllCaps="true"
android:textSize="12sp"/>
- <Space
- android:layout_width="@dimen/overview_panel_buttonSpacing"
- android:layout_height="wrap_content"/>
<TextView
android:id="@+id/settings_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_gravity="end|top"
android:text="@string/settings_button_text"
android:drawablePadding="4dp"
android:gravity="center_horizontal"
@@ -60,4 +56,4 @@
android:fontFamily="sans-serif-condensed"
android:textAllCaps="true"
android:textSize="12sp" />
-</LinearLayout>
+</FrameLayout>
diff --git a/res/values/config.xml b/res/values/config.xml
index 1a83556fb..1538d9fab 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -3,6 +3,10 @@
<integer name="config_dynamic_grid_max_long_edge_cell_count">6</integer>
<integer name="config_dynamic_grid_max_short_edge_cell_count">5</integer>
<integer name="config_dynamic_grid_min_edge_cell_count">3</integer>
+ <!-- Out of 100, the percent of space the overview bar should try and take vertically. -->
+ <integer name="config_dynamic_grid_overview_icon_zone_percentage">20</integer>
+ <!-- Out of 100, the percent to shrink the workspace during overview mode. -->
+ <integer name="config_dynamic_grid_overview_scale_percentage">80</integer>
<!-- Miscellaneous -->
<bool name="config_largeHeap">false</bool>
@@ -24,8 +28,6 @@
<!-- Out of 100, the percent to shrink the workspace during spring loaded mode. -->
<integer name="config_workspaceSpringLoadShrinkPercentage">80</integer>
- <!-- Out of 100, the percent to shrink the workspace during overview mode. -->
- <integer name="config_workspaceOverviewShrinkPercentage">58</integer>
<!-- Fade/zoom in/out duration & scale in the AllApps transition.
Note: This should be less than the workspaceShrinkTime as they happen together. -->
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 740393ea5..c86fe314d 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -23,6 +23,9 @@
<dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen>
<dimen name="dynamic_grid_all_apps_cell_padding">18dp</dimen>
<dimen name="dynamic_grid_workspace_page_spacing">8dp</dimen>
+ <dimen name="dynamic_grid_overview_min_icon_zone_height">80dp</dimen>
+ <dimen name="dynamic_grid_overview_max_icon_zone_height">120dp</dimen>
+ <dimen name="dynamic_grid_overview_bar_max_width">280dp</dimen>
<!-- Wallpaper picker -->
<dimen name="wallpaperThumbnailWidth">106.5dp</dimen>
@@ -49,9 +52,6 @@
<!-- Workspace -->
<dimen name="workspace_max_gap">16dp</dimen>
<dimen name="workspace_overscroll_drawable_padding">0dp</dimen>
- <dimen name="overview_panel_bottom_padding">50dp</dimen>
- <dimen name="overview_panel_buttonSpacing">60dp</dimen>
- <dimen name="overview_mode_page_offset">130dp</dimen>
<!-- QSB -->
<dimen name="toolbar_button_vertical_padding">4dip</dimen>
diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java
index 0d759a175..5f8c011f9 100644
--- a/src/com/android/launcher3/DynamicGrid.java
+++ b/src/com/android/launcher3/DynamicGrid.java
@@ -86,6 +86,12 @@ class DeviceProfile {
int availableHeightPx;
int defaultPageSpacingPx;
+ int overviewModeMinIconZoneHeightPx;
+ int overviewModeMaxIconZoneHeightPx;
+ int overviewModeMaxBarWidthPx;
+ float overviewModeIconZoneRatio;
+ float overviewModeScaleFactor;
+
int iconSizePx;
int iconTextSizePx;
int iconDrawablePaddingPx;
@@ -158,6 +164,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) {
@@ -454,6 +470,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()) {
@@ -601,6 +631,7 @@ class DeviceProfile {
}
}
+ // Layout AllApps
AppsCustomizeTabHost host = (AppsCustomizeTabHost)
launcher.findViewById(R.id.apps_customize_pane);
if (host != null) {
@@ -639,6 +670,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 8181bea4f..5ff80b8f1 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -786,14 +786,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 8c2c89d75..7692ae6d8 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -184,7 +184,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)
@@ -315,13 +314,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);
mOriginalDefaultPage = mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1);
a.recycle();
@@ -417,10 +416,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();
@@ -1998,14 +1995,17 @@ public class Workspace extends SmoothPagedView
}
int getOverviewModeTranslationY() {
- int childHeight = getNormalChildHeight();
- int viewPortHeight = getViewportHeight();
- int scaledChildHeight = (int) (mOverviewModeShrinkFactor * 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;
}
boolean shouldVoiceButtonProxyBeVisible() {