summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/dimens.xml3
-rw-r--r--src/com/android/launcher2/Launcher.java19
-rw-r--r--src/com/android/launcher2/Workspace.java44
3 files changed, 51 insertions, 15 deletions
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 9bf6cdf46..38936ce90 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -41,4 +41,7 @@
<!-- horizontal spacing between mini screen thumbnails ie. in all
apps and in customization mode -->
<dimen name="smallScreenSpacing">10dip</dimen>
+
+ <!-- vertical spacing between edge of screen and mini screen thumbnails -->
+ <dimen name="smallScreenVerticalMargin">20dip</dimen>
</resources>
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index be60e9863..8102d19ec 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1266,7 +1266,7 @@ public final class Launcher extends Activity
// Animate the widget chooser up from the bottom of the screen
if (!isCustomizationDrawerVisible()) {
showCustomizationDrawer();
- mWorkspace.shrink();
+ mWorkspace.shrinkToTop();
}
} else {
showAddDialog(mMenuAddInfo);
@@ -2023,7 +2023,8 @@ public final class Launcher extends Activity
// AllAppsView.Watcher
public void zoomed(float zoom) {
- if (zoom == 1.0f) {
+ // In XLarge view, we zoom down the workspace below all apps so it's still visible
+ if (zoom == 1.0f && !LauncherApplication.isScreenXLarge()) {
mWorkspace.setVisibility(View.GONE);
}
}
@@ -2036,6 +2037,7 @@ public final class Launcher extends Activity
mAllAppsGrid.zoom(1.0f, false);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.all_apps_zoom_in);
((View) mAllAppsGrid).startAnimation(anim);
+ mWorkspace.shrinkToBottom();
} else {
mAllAppsGrid.zoom(1.0f, animated);
}
@@ -2099,6 +2101,7 @@ public final class Launcher extends Activity
}
});
((View)mAllAppsGrid).startAnimation(anim);
+ mWorkspace.unshrink();
} else {
mAllAppsGrid.zoom(0.0f, animated);
}
@@ -2128,7 +2131,7 @@ public final class Launcher extends Activity
mHomeCustomizationDrawer.startAnimation(AnimationUtils.loadAnimation(this, R.anim.home_customization_drawer_slide_up));
}
- void hideCustomizationDrawer() {
+ private void hideCustomizationDrawer() {
if (isCustomizationDrawerVisible()) {
Animation slideDownAnimation = AnimationUtils.loadAnimation(this, R.anim.home_customization_drawer_slide_down);
slideDownAnimation.setAnimationListener(new Animation.AnimationListener() {
@@ -2142,6 +2145,16 @@ public final class Launcher extends Activity
}
}
+ void onWorkspaceUnshrink() {
+ if (isAllAppsVisible()) {
+ // TODO: Make a smoother transition here
+ closeAllApps(false);
+ }
+ if (isCustomizationDrawerVisible()) {
+ hideCustomizationDrawer();
+ }
+ }
+
/**
* Displays the shortcut creation dialog and launches, if necessary, the
* appropriate activity.
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 7fbdd1ebc..1a2f8129d 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -548,7 +548,7 @@ public class Workspace extends ViewGroup
// this is an intercepted event being forwarded from a cell layout
if (mIsSmall) {
unshrink((CellLayout)v);
- mLauncher.hideCustomizationDrawer();
+ mLauncher.onWorkspaceUnshrink();
}
return false;
}
@@ -710,8 +710,9 @@ public class Workspace extends ViewGroup
final View child = getChildAt(i);
if (child.getVisibility() != View.GONE) {
final int childX = child.getX();
- child.layout(
- childX, 0, childX + child.getMeasuredWidth(), child.getMeasuredHeight());
+ final int childY = child.getY();
+ child.layout(childX, childY,
+ childX + child.getMeasuredWidth(), childY + child.getMeasuredHeight());
}
}
@@ -1117,16 +1118,30 @@ public class Workspace extends ViewGroup
return true;
}
+ void shrinkToTop() {
+ shrink(true);
+ }
+
+ void shrinkToBottom() {
+ shrink(false);
+ }
+
// we use this to shrink the workspace for the all apps view and the customize view
- void shrink() {
+ private void shrink(boolean shrinkToTop) {
mIsSmall = true;
final int screenWidth = getWidth();
-
- final int scaledWorkspacePageWidth = (int)(SHRINK_FACTOR*screenWidth);
+ final int screenHeight = getHeight();
+ final int scaledScreenWidth = (int)(SHRINK_FACTOR*screenWidth);
+ final int scaledScreenHeight = (int)(SHRINK_FACTOR*screenHeight);
final float scaledSpacing = getResources().getDimension(R.dimen.smallScreenSpacing);
final int screenCount = getChildCount();
- float totalWidth = screenCount * scaledWorkspacePageWidth + (screenCount - 1) * scaledSpacing;
+ float totalWidth = screenCount * scaledScreenWidth + (screenCount - 1) * scaledSpacing;
+
+ float newY = getResources().getDimension(R.dimen.smallScreenVerticalMargin);
+ if (!shrinkToTop) {
+ newY = screenHeight - newY - scaledScreenHeight;
+ }
// We animate all the screens to the centered position in workspace
// At the same time, the screens become greyed/dimmed
@@ -1136,20 +1151,23 @@ public class Workspace extends ViewGroup
Sequencer s = new Sequencer();
for (int i = 0; i < screenCount; i++) {
CellLayout cl = (CellLayout) getChildAt(i);
- PropertyAnimator translate = new PropertyAnimator(
+ PropertyAnimator translateX = new PropertyAnimator(
500, cl, "x", cl.getX(), (int) newX);
+ PropertyAnimator translateY = new PropertyAnimator(
+ 500, cl, "y", cl.getY(), (int) newY);
PropertyAnimator scaleX = new PropertyAnimator(
500, cl, "scaleX", cl.getScaleX(), SHRINK_FACTOR);
PropertyAnimator scaleY = new PropertyAnimator(
500, cl, "scaleY", cl.getScaleY(), SHRINK_FACTOR);
PropertyAnimator alpha = new PropertyAnimator(
500, cl, "dimmedBitmapAlpha", cl.getDimmedBitmapAlpha(), 1.0f);
- Sequencer.Builder b = s.play(translate);
+ Sequencer.Builder b = s.play(translateX);
+ b.with(translateY);
b.with(scaleX);
b.with(scaleY);
b.with(alpha);
// increment newX for the next screen
- newX += scaledWorkspacePageWidth + scaledSpacing;
+ newX += scaledScreenWidth + scaledSpacing;
cl.setOnInterceptTouchListener(this);
}
setChildrenDrawnWithCacheEnabled(true);
@@ -1184,12 +1202,14 @@ public class Workspace extends ViewGroup
CellLayout cl = (CellLayout)getChildAt(i);
int x = screenWidth * i;
- PropertyAnimator translate = new PropertyAnimator(500, cl, "x", cl.getX(), x);
+ PropertyAnimator translateX = new PropertyAnimator(500, cl, "x", cl.getX(), x);
+ PropertyAnimator translateY = new PropertyAnimator(500, cl, "y", cl.getY(), 0);
PropertyAnimator scaleX = new PropertyAnimator(500, cl, "scaleX", cl.getScaleX(), 1.0f);
PropertyAnimator scaleY = new PropertyAnimator(500, cl, "scaleY", cl.getScaleY(), 1.0f);
PropertyAnimator alpha = new PropertyAnimator(
500, cl, "dimmedBitmapAlpha", cl.getDimmedBitmapAlpha(), 0.0f);
- Sequencer.Builder b = s.play(translate);
+ Sequencer.Builder b = s.play(translateX);
+ b.with(translateY);
b.with(scaleX);
b.with(scaleY);
b.with(alpha);