From 4cb3724a2c1e5f278e1531d643accc40fcd8e219 Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Mon, 9 Aug 2010 21:05:32 -0700 Subject: [PATCH] workspace bug fixes - fixed: pressing home sometimes left workspaces in shrunken state - fixed: position of delete zone (trash icon) - fixed: workspace unshrink sometimes looked weird when coming from all apps - fixed: clicking power button and returning left workspace in shrunken state Change-Id: Ie974202926e6880ccda26ac9fe967fb587a9b7a3 --- res/layout-xlarge/launcher.xml | 21 ++++----- res/values-xlarge/dimens.xml | 3 ++ src/com/android/launcher2/Launcher.java | 11 ++++- src/com/android/launcher2/Workspace.java | 58 ++++++++++++++++-------- 4 files changed, 62 insertions(+), 31 deletions(-) diff --git a/res/layout-xlarge/launcher.xml b/res/layout-xlarge/launcher.xml index 395b04871b..6eb9318b45 100644 --- a/res/layout-xlarge/launcher.xml +++ b/res/layout-xlarge/launcher.xml @@ -69,6 +69,16 @@ android:onClick="onClickConfigureButton" android:focusable="true" android:clickable="true" /> + - 20dip + + + 6dip diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 5184f80bf1..008b6361c6 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1038,9 +1038,15 @@ public final class Launcher extends Activity != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); boolean allAppsVisible = isAllAppsVisible(); - // TODO: Figure out the right thing to do in XLarge mode here + // in all these cases, only animate if we're already on home + if (LauncherApplication.isScreenXLarge()) { + mWorkspace.unshrink(alreadyOnHome); + } if (!mWorkspace.isDefaultScreenShowing()) { - mWorkspace.moveToDefaultScreen(alreadyOnHome && !allAppsVisible); + // on the phone, we don't animate the change to the workspace if all apps is visible + // on xlarge screens, however, we want an animated transition + mWorkspace.moveToDefaultScreen(alreadyOnHome && + (LauncherApplication.isScreenXLarge() || !allAppsVisible)); } closeAllApps(alreadyOnHome && allAppsVisible); hideCustomizationDrawer(); @@ -2409,6 +2415,7 @@ public final class Launcher extends Activity animate = false; } closeAllApps(animate); + mWorkspace.unshrink(animate); } } } diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 26785c515d..69a86865df 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1149,15 +1149,21 @@ public class Workspace extends ViewGroup // We call this when we trigger an unshrink by clicking on the CellLayout cl private void unshrink(CellLayout clThatWasClicked) { - if (mIsSmall) { - int newCurrentScreen = mCurrentScreen; - final int screenCount = getChildCount(); - for (int i = 0; i < screenCount; i++) { - if (getChildAt(i) == clThatWasClicked) { - newCurrentScreen = i; - } + int newCurrentScreen = mCurrentScreen; + final int screenCount = getChildCount(); + for (int i = 0; i < screenCount; i++) { + if (getChildAt(i) == clThatWasClicked) { + newCurrentScreen = i; } - final int delta = (newCurrentScreen - mCurrentScreen)*getWidth(); + } + unshrink(newCurrentScreen); + } + + private void unshrink(int newCurrentScreen) { + if (mIsSmall) { + int delta = (newCurrentScreen - mCurrentScreen)*getWidth(); + + final int screenCount = getChildCount(); for (int i = 0; i < screenCount; i++) { CellLayout cl = (CellLayout) getChildAt(i); cl.setX(cl.getX() + delta); @@ -1169,20 +1175,32 @@ public class Workspace extends ViewGroup } } - public void unshrink() { + void unshrink() { + unshrink(true); + } + + void unshrink(boolean animated) { if (mIsSmall) { Sequencer s = new Sequencer(); final int screenCount = getChildCount(); + + final int duration = getResources().getInteger(R.integer.config_workspaceUnshrinkTime); for (int i = 0; i < screenCount; i++) { final CellLayout cl = (CellLayout)getChildAt(i); - final int duration = - getResources().getInteger(R.integer.config_workspaceUnshrinkTime); - s.playTogether( - new PropertyAnimator(duration, cl, "translationX", 0.0f), - new PropertyAnimator(duration, cl, "translationY", 0.0f), - new PropertyAnimator(duration, cl, "scaleX", 1.0f), - new PropertyAnimator(duration, cl, "scaleY", 1.0f), - new PropertyAnimator(duration, cl, "dimmedBitmapAlpha", 0.0f)); + if (animated) { + s.playTogether( + new PropertyAnimator(duration, cl, "translationX", 0.0f), + new PropertyAnimator(duration, cl, "translationY", 0.0f), + new PropertyAnimator(duration, cl, "scaleX", 1.0f), + new PropertyAnimator(duration, cl, "scaleY", 1.0f), + new PropertyAnimator(duration, cl, "dimmedBitmapAlpha", 0.0f)); + } else { + cl.setTranslationX(0.0f); + cl.setTranslationY(0.0f); + cl.setScaleX(1.0f); + cl.setScaleY(1.0f); + cl.setDimmedBitmapAlpha(0.0f); + } } s.addListener(mUnshrinkAnimationListener); s.start(); @@ -1830,7 +1848,11 @@ public class Workspace extends ViewGroup void moveToDefaultScreen(boolean animate) { if (animate) { - snapToScreen(mDefaultScreen); + if (mIsSmall) { + unshrink(mDefaultScreen); + } else { + snapToScreen(mDefaultScreen); + } } else { setCurrentScreen(mDefaultScreen); }