am 65dbf3e4: Merge "Updating search bar animation, and adding use of hw layers." into jb-dev

* commit '65dbf3e454a94869cf28a6bd349b40e8e79d1ccf':
  Updating search bar animation, and adding use of hw layers.
This commit is contained in:
Michael Jurka
2012-05-16 17:58:01 -07:00
committed by Android Git Automerger
2 changed files with 29 additions and 15 deletions
+12 -7
View File
@@ -2367,6 +2367,9 @@ public final class Launcher extends Activity
if (!animationCancelled) { if (!animationCancelled) {
updateWallpaperVisibility(false); updateWallpaperVisibility(false);
} }
// Hide the search bar
mSearchDropTargetBar.hideSearchBar(false);
} }
@Override @Override
@@ -2435,6 +2438,9 @@ public final class Launcher extends Activity
// Hide the workspace scrollbar // Hide the workspace scrollbar
mWorkspace.hideScrollingIndicator(true); mWorkspace.hideScrollingIndicator(true);
hideDockDivider(); hideDockDivider();
// Hide the search bar
mSearchDropTargetBar.hideSearchBar(false);
} }
dispatchOnLauncherTransitionPrepare(fromView, animated, false); dispatchOnLauncherTransitionPrepare(fromView, animated, false);
dispatchOnLauncherTransitionStart(fromView, animated, false); dispatchOnLauncherTransitionStart(fromView, animated, false);
@@ -2568,13 +2574,16 @@ public final class Launcher extends Activity
void showWorkspace(boolean animated, Runnable onCompleteRunnable) { void showWorkspace(boolean animated, Runnable onCompleteRunnable) {
if (mState != State.WORKSPACE) { if (mState != State.WORKSPACE) {
boolean wasInSpringLoadedMode = (mState == State.APPS_CUSTOMIZE_SPRING_LOADED);
mWorkspace.setVisibility(View.VISIBLE); mWorkspace.setVisibility(View.VISIBLE);
hideAppsCustomizeHelper(State.WORKSPACE, animated, false, onCompleteRunnable); hideAppsCustomizeHelper(State.WORKSPACE, animated, false, onCompleteRunnable);
// Show the search bar and hotseat // Show the search bar (only animate if we were showing the drop target bar in spring
mSearchDropTargetBar.showSearchBar(animated); // loaded mode)
mSearchDropTargetBar.showSearchBar(wasInSpringLoadedMode);
// We only need to animate in the dock divider if we're going from spring loaded mode // We only need to animate in the dock divider if we're going from spring loaded mode
showDockDivider(animated && mState == State.APPS_CUSTOMIZE_SPRING_LOADED); showDockDivider(animated && wasInSpringLoadedMode);
// Set focus to the AppsCustomize button // Set focus to the AppsCustomize button
if (mAllAppsButton != null) { if (mAllAppsButton != null) {
@@ -2601,9 +2610,6 @@ public final class Launcher extends Activity
showAppsCustomizeHelper(animated, false); showAppsCustomizeHelper(animated, false);
mAppsCustomizeTabHost.requestFocus(); mAppsCustomizeTabHost.requestFocus();
// Hide the search bar and hotseat
mSearchDropTargetBar.hideSearchBar(animated);
// Change the state *after* we've called all the transition code // Change the state *after* we've called all the transition code
mState = State.APPS_CUSTOMIZE; mState = State.APPS_CUSTOMIZE;
@@ -2636,7 +2642,6 @@ public final class Launcher extends Activity
// exitSpringLoadedDragMode made it visible. This is a bit hacky; we should // exitSpringLoadedDragMode made it visible. This is a bit hacky; we should
// clean up our state transition functions // clean up our state transition functions
mAppsCustomizeTabHost.setVisibility(View.GONE); mAppsCustomizeTabHost.setVisibility(View.GONE);
mSearchDropTargetBar.showSearchBar(true);
showWorkspace(true, onCompleteRunnable); showWorkspace(true, onCompleteRunnable);
} else { } else {
exitSpringLoadedDragMode(); exitSpringLoadedDragMode();
@@ -75,6 +75,13 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
mDeleteDropTarget.setLauncher(launcher); mDeleteDropTarget.setLauncher(launcher);
} }
// This sets up the view for the animation
private void prepareStartAnimation(View v) {
// Enable the hw layers (which will be disabled in the onAnimationEnd callback below
v.setLayerType(View.LAYER_TYPE_HARDWARE, null);
v.buildLayer();
}
private void prepareAnimation(ObjectAnimator in, ObjectAnimator out, final View v) { private void prepareAnimation(ObjectAnimator in, ObjectAnimator out, final View v) {
in.setInterpolator(new AccelerateInterpolator()); in.setInterpolator(new AccelerateInterpolator());
in.setDuration(sTransitionInDuration); in.setDuration(sTransitionInDuration);
@@ -84,7 +91,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
v.setVisibility(View.VISIBLE); v.setVisibility(View.VISIBLE);
} }
}); });
out.setInterpolator(new DecelerateInterpolator()); out.setInterpolator(new AccelerateInterpolator());
out.setDuration(sTransitionOutDuration); out.setDuration(sTransitionOutDuration);
out.addListener(new AnimatorListenerAdapter() { out.addListener(new AnimatorListenerAdapter() {
@Override @Override
@@ -139,9 +146,7 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
mQSBSearchBarFadeOutAnim.end(); mQSBSearchBarFadeOutAnim.end();
} }
private void cancelAnimations() { private void cancelSearchBarAnimations() {
mDropTargetBarFadeInAnim.cancel();
mDropTargetBarFadeOutAnim.cancel();
mQSBSearchBarFadeInAnim.cancel(); mQSBSearchBarFadeInAnim.cancel();
mQSBSearchBarFadeOutAnim.cancel(); mQSBSearchBarFadeOutAnim.cancel();
} }
@@ -150,8 +155,9 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
* Shows and hides the search bar. * Shows and hides the search bar.
*/ */
public void showSearchBar(boolean animated) { public void showSearchBar(boolean animated) {
cancelAnimations(); cancelSearchBarAnimations();
if (animated) { if (animated) {
prepareStartAnimation(mQSBSearchBar);
mQSBSearchBarFadeInAnim.start(); mQSBSearchBarFadeInAnim.start();
} else { } else {
mQSBSearchBar.setVisibility(View.VISIBLE); mQSBSearchBar.setVisibility(View.VISIBLE);
@@ -164,8 +170,9 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
mIsSearchBarHidden = false; mIsSearchBarHidden = false;
} }
public void hideSearchBar(boolean animated) { public void hideSearchBar(boolean animated) {
cancelAnimations(); cancelSearchBarAnimations();
if (animated) { if (animated) {
prepareStartAnimation(mQSBSearchBar);
mQSBSearchBarFadeOutAnim.start(); mQSBSearchBarFadeOutAnim.start();
} else { } else {
mQSBSearchBar.setVisibility(View.INVISIBLE); mQSBSearchBar.setVisibility(View.INVISIBLE);
@@ -194,11 +201,11 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
@Override @Override
public void onDragStart(DragSource source, Object info, int dragAction) { public void onDragStart(DragSource source, Object info, int dragAction) {
// Animate out the QSB search bar, and animate in the drop target bar // Animate out the QSB search bar, and animate in the drop target bar
mDropTargetBar.setLayerType(View.LAYER_TYPE_HARDWARE, null); prepareStartAnimation(mDropTargetBar);
mDropTargetBar.buildLayer();
mDropTargetBarFadeOutAnim.cancel(); mDropTargetBarFadeOutAnim.cancel();
mDropTargetBarFadeInAnim.start(); mDropTargetBarFadeInAnim.start();
if (!mIsSearchBarHidden) { if (!mIsSearchBarHidden) {
prepareStartAnimation(mQSBSearchBar);
mQSBSearchBarFadeInAnim.cancel(); mQSBSearchBarFadeInAnim.cancel();
mQSBSearchBarFadeOutAnim.start(); mQSBSearchBarFadeOutAnim.start();
} }
@@ -212,9 +219,11 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
public void onDragEnd() { public void onDragEnd() {
if (!mDeferOnDragEnd) { if (!mDeferOnDragEnd) {
// Restore the QSB search bar, and animate out the drop target bar // Restore the QSB search bar, and animate out the drop target bar
prepareStartAnimation(mDropTargetBar);
mDropTargetBarFadeInAnim.cancel(); mDropTargetBarFadeInAnim.cancel();
mDropTargetBarFadeOutAnim.start(); mDropTargetBarFadeOutAnim.start();
if (!mIsSearchBarHidden) { if (!mIsSearchBarHidden) {
prepareStartAnimation(mQSBSearchBar);
mQSBSearchBarFadeOutAnim.cancel(); mQSBSearchBarFadeOutAnim.cancel();
mQSBSearchBarFadeInAnim.start(); mQSBSearchBarFadeInAnim.start();
} }