Revert "Speed up All Apps -> Workspace transition"

Temp fix for 5976264

This reverts commit 9433fa7eba.

Change-Id: Ic49ffc818b9b233b3717b52a5f77eaac1e001f5b
This commit is contained in:
Michael Jurka 2012-02-14 12:13:34 -08:00 committed by Winson Chung
parent d83f5f4db3
commit 9753d13c7b
5 changed files with 76 additions and 89 deletions

View File

@ -347,8 +347,9 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
/* LauncherTransitionable overrides */
@Override
public void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace) {
public void onLauncherTransitionStart(Launcher l, Animator animation, boolean toWorkspace) {
mInTransition = true;
boolean animated = (animation != null);
mContent.setVisibility(VISIBLE);
@ -371,9 +372,9 @@ public class AppsCustomizeTabHost extends TabHost implements LauncherTransitiona
}
@Override
public void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace) {
public void onLauncherTransitionEnd(Launcher l, Animator animation, boolean toWorkspace) {
mInTransition = false;
if (animated) {
if (animation != null) {
setLayerType(LAYER_TYPE_NONE, null);
}

View File

@ -2212,18 +2212,6 @@ public final class Launcher extends Activity
}
}
private void dispatchOnLauncherTransitionStart(View v, boolean animated, boolean toWorkspace) {
if (v instanceof LauncherTransitionable) {
((LauncherTransitionable) v).onLauncherTransitionStart(this, animated, toWorkspace);
}
}
private void dispatchOnLauncherTransitionEnd(View v, boolean animated, boolean toWorkspace) {
if (v instanceof LauncherTransitionable) {
((LauncherTransitionable) v).onLauncherTransitionEnd(this, animated, toWorkspace);
}
}
/**
* Things to test when changing the following seven functions.
* - Home from workspace
@ -2269,7 +2257,7 @@ public final class Launcher extends Activity
* Assumes that the view to show is anchored at either the very top or very bottom
* of the screen.
*/
private void showAppsCustomizeHelper(final boolean animated, final boolean springLoaded) {
private void showAppsCustomizeHelper(boolean animated, final boolean springLoaded) {
if (mStateAnimation != null) {
mStateAnimation.cancel();
mStateAnimation = null;
@ -2280,7 +2268,6 @@ public final class Launcher extends Activity
final int duration = res.getInteger(R.integer.config_appsCustomizeZoomInTime);
final int fadeDuration = res.getInteger(R.integer.config_appsCustomizeFadeInTime);
final float scale = (float) res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor);
final View fromView = mWorkspace;
final View toView = mAppsCustomizeTabHost;
final int startDelay =
res.getInteger(R.integer.config_workspaceAppsCustomizeAnimationStagger);
@ -2327,8 +2314,10 @@ public final class Launcher extends Activity
}
@Override
public void onAnimationEnd(Animator animation) {
dispatchOnLauncherTransitionEnd(fromView, animated, false);
dispatchOnLauncherTransitionEnd(toView, animated, false);
if (toView instanceof LauncherTransitionable) {
((LauncherTransitionable) toView).onLauncherTransitionEnd(instance,
scaleAnim, false);
}
if (!springLoaded && !LauncherApplication.isScreenLarge()) {
// Hide the workspace scrollbar
@ -2351,14 +2340,14 @@ public final class Launcher extends Activity
}
boolean delayAnim = false;
LauncherTransitionable lt = (LauncherTransitionable) toView;
final ViewTreeObserver observer;
dispatchOnLauncherTransitionStart(fromView, animated, false);
dispatchOnLauncherTransitionStart(toView, animated, false);
lt.onLauncherTransitionStart(instance, mStateAnimation, false);
// If any of the objects being animated haven't been measured/laid out
// yet, delay the animation until we get a layout pass
if ((((LauncherTransitionable) toView).getContent().getMeasuredWidth() == 0) ||
if ((lt.getContent().getMeasuredWidth() == 0) ||
(mWorkspace.getMeasuredWidth() == 0) ||
(toView.getMeasuredWidth() == 0)) {
observer = mWorkspace.getViewTreeObserver();
@ -2397,16 +2386,16 @@ public final class Launcher extends Activity
toView.setScaleY(1.0f);
toView.setVisibility(View.VISIBLE);
toView.bringToFront();
if (toView instanceof LauncherTransitionable) {
((LauncherTransitionable) toView).onLauncherTransitionStart(instance, null, false);
((LauncherTransitionable) toView).onLauncherTransitionEnd(instance, null, false);
if (!springLoaded && !LauncherApplication.isScreenLarge()) {
// Hide the workspace scrollbar
mWorkspace.hideScrollingIndicator(true);
hideDockDivider();
if (!springLoaded && !LauncherApplication.isScreenLarge()) {
// Hide the workspace scrollbar
mWorkspace.hideScrollingIndicator(true);
hideDockDivider();
}
}
dispatchOnLauncherTransitionStart(fromView, animated, false);
dispatchOnLauncherTransitionEnd(fromView, animated, false);
dispatchOnLauncherTransitionStart(toView, animated, false);
dispatchOnLauncherTransitionEnd(toView, animated, false);
updateWallpaperVisibility(false);
}
}
@ -2418,12 +2407,12 @@ public final class Launcher extends Activity
*/
private void hideAppsCustomizeHelper(State toState, final boolean animated,
final boolean springLoaded, final Runnable onCompleteRunnable) {
if (mStateAnimation != null) {
mStateAnimation.cancel();
mStateAnimation = null;
}
Resources res = getResources();
final Launcher instance = this;
final int duration = res.getInteger(R.integer.config_appsCustomizeZoomOutTime);
final int fadeOutDuration =
@ -2431,7 +2420,6 @@ public final class Launcher extends Activity
final float scaleFactor = (float)
res.getInteger(R.integer.config_appsCustomizeZoomScaleFactor);
final View fromView = mAppsCustomizeTabHost;
final View toView = mWorkspace;
Animator workspaceAnim = null;
if (toState == State.WORKSPACE) {
@ -2462,18 +2450,19 @@ public final class Launcher extends Activity
.setDuration(fadeOutDuration);
alphaAnim.setInterpolator(new AccelerateDecelerateInterpolator());
mStateAnimation = new AnimatorSet();
dispatchOnLauncherTransitionStart(fromView, animated, true);
dispatchOnLauncherTransitionStart(toView, animated, true);
mStateAnimation.addListener(new AnimatorListenerAdapter() {
if (fromView instanceof LauncherTransitionable) {
((LauncherTransitionable) fromView).onLauncherTransitionStart(instance, alphaAnim,
true);
}
alphaAnim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
updateWallpaperVisibility(true);
fromView.setVisibility(View.GONE);
dispatchOnLauncherTransitionEnd(fromView, animated, true);
dispatchOnLauncherTransitionEnd(toView, animated, true);
if (fromView instanceof LauncherTransitionable) {
((LauncherTransitionable) fromView).onLauncherTransitionEnd(instance,
alphaAnim, true);
}
mWorkspace.hideScrollingIndicator(false);
if (onCompleteRunnable != null) {
onCompleteRunnable.run();
@ -2481,6 +2470,7 @@ public final class Launcher extends Activity
}
});
mStateAnimation = new AnimatorSet();
mStateAnimation.playTogether(scaleAnim, alphaAnim);
if (workspaceAnim != null) {
mStateAnimation.play(workspaceAnim);
@ -2488,10 +2478,10 @@ public final class Launcher extends Activity
mStateAnimation.start();
} else {
fromView.setVisibility(View.GONE);
dispatchOnLauncherTransitionStart(fromView, animated, false);
dispatchOnLauncherTransitionEnd(fromView, animated, false);
dispatchOnLauncherTransitionStart(toView, animated, false);
dispatchOnLauncherTransitionEnd(toView, animated, false);
if (fromView instanceof LauncherTransitionable) {
((LauncherTransitionable) fromView).onLauncherTransitionStart(instance, null, true);
((LauncherTransitionable) fromView).onLauncherTransitionEnd(instance, null, true);
}
mWorkspace.hideScrollingIndicator(false);
}
}
@ -3438,6 +3428,6 @@ public final class Launcher extends Activity
interface LauncherTransitionable {
View getContent();
void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace);
void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace);
void onLauncherTransitionStart(Launcher l, Animator animation, boolean toWorkspace);
void onLauncherTransitionEnd(Launcher l, Animator animation, boolean toWorkspace);
}

View File

@ -1680,7 +1680,6 @@ public abstract class PagedView extends ViewGroup {
if (mHasScrollIndicator && mScrollIndicator == null) {
ViewGroup parent = (ViewGroup) getParent();
mScrollIndicator = (View) (parent.findViewById(R.id.paged_view_indicator));
mScrollIndicator.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mHasScrollIndicator = mScrollIndicator != null;
if (mHasScrollIndicator) {
mScrollIndicator.setVisibility(View.VISIBLE);
@ -1806,6 +1805,7 @@ public abstract class PagedView extends ViewGroup {
indicatorPos += indicatorCenterOffset;
}
mScrollIndicator.setTranslationX(indicatorPos);
mScrollIndicator.invalidate();
}
public void showScrollIndicatorTrack() {

View File

@ -129,26 +129,14 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
@Override
public void onAnimationStart(Animator animation) {
mQSBSearchBar.setVisibility(View.VISIBLE);
mQSBSearchBar.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
@Override
public void onAnimationEnd(Animator animation) {
mQSBSearchBar.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
mQSBSearchBarFadeOutAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "alpha", 0f);
mQSBSearchBarFadeOutAnim.setDuration(sTransitionOutDuration);
mQSBSearchBarFadeOutAnim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
mQSBSearchBar.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
@Override
public void onAnimationEnd(Animator animation) {
mQSBSearchBar.setVisibility(View.INVISIBLE);
mQSBSearchBar.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
}

View File

@ -17,6 +17,8 @@
package com.android.launcher2;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
@ -24,7 +26,6 @@ import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.AlertDialog;
import android.app.WallpaperManager;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
import android.content.ClipData;
@ -56,7 +57,6 @@ import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.MeasureSpec;
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
@ -77,7 +77,7 @@ import java.util.List;
*/
public class Workspace extends SmoothPagedView
implements DropTarget, DragSource, DragScroller, View.OnTouchListener,
DragController.DragListener, LauncherTransitionable {
DragController.DragListener {
@SuppressWarnings({"UnusedDeclaration"})
private static final String TAG = "Launcher.Workspace";
@ -159,6 +159,8 @@ public class Workspace extends SmoothPagedView
private State mState = State.NORMAL;
private boolean mIsSwitchingState = false;
private AnimatorListener mChangeStateAnimationListener;
boolean mAnimatingViewIntoPlace = false;
boolean mIsDragOccuring = false;
boolean mChildrenLayersEnabled = true;
@ -385,6 +387,20 @@ public class Workspace extends SmoothPagedView
// In this case, we will skip drawing background protection
}
mChangeStateAnimationListener = new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
mIsSwitchingState = true;
}
@Override
public void onAnimationEnd(Animator animation) {
mIsSwitchingState = false;
mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
updateChildrenLayersEnabled();
}
};
mWallpaperOffset = new WallpaperOffsetInterpolator();
Display display = mLauncher.getWindowManager().getDefaultDisplay();
mDisplayWidth = display.getWidth();
@ -1624,10 +1640,26 @@ public class Workspace extends SmoothPagedView
cl.setBackgroundAlphaMultiplier(finalAlphaMultiplierValue);
cl.setAlpha(finalAlpha);
cl.setRotationY(rotation);
mChangeStateAnimationListener.onAnimationEnd(null);
}
}
if (animated) {
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(android.animation.Animator animation) {
// The above code to determine initialAlpha and finalAlpha will ensure that only
// the current page is visible during (and subsequently, after) the transition
// animation. If fade adjacent pages is disabled, then re-enable the page
// visibility after the transition animation.
if (!mFadeInAdjacentScreens) {
for (int i = 0; i < getChildCount(); i++) {
final CellLayout cl = (CellLayout) getChildAt(i);
cl.setAlpha(1f);
}
}
}
});
for (int index = 0; index < getChildCount(); index++) {
final int i = index;
final CellLayout cl = (CellLayout) getChildAt(i);
@ -1683,6 +1715,9 @@ public class Workspace extends SmoothPagedView
}
}
anim.setStartDelay(delay);
// If we call this when we're not animated, onAnimationEnd is never called on
// the listener; make sure we only use the listener when we're actually animating
anim.addListener(mChangeStateAnimationListener);
}
if (stateIsSpringLoaded) {
@ -1698,33 +1733,6 @@ public class Workspace extends SmoothPagedView
return anim;
}
@Override
public void onLauncherTransitionStart(Launcher l, boolean animated, boolean toWorkspace) {
mIsSwitchingState = true;
}
@Override
public void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace) {
mIsSwitchingState = false;
mWallpaperOffset.setOverrideHorizontalCatchupConstant(false);
updateChildrenLayersEnabled();
// The code in getChangeStateAnimation to determine initialAlpha and finalAlpha will ensure
// ensure that only the current page is visible during (and subsequently, after) the
// transition animation. If fade adjacent pages is disabled, then re-enable the page
// visibility after the transition animation.
if (!mFadeInAdjacentScreens) {
for (int i = 0; i < getChildCount(); i++) {
final CellLayout cl = (CellLayout) getChildAt(i);
cl.setAlpha(1f);
}
}
}
@Override
public View getContent() {
return this;
}
/**
* Draw the View v into the given Canvas.
*