Merge "Adding logging to track issue with apps pages. (Bug 6549598)" into jb-dev
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index 92cabe5..db65a31 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -106,6 +106,7 @@
private static String sDefaultFolderName;
private static String sHintText;
+ private ObjectAnimator mOpenCloseAnimator;
/**
* Used to inflate the Workspace from XML.
@@ -417,7 +418,8 @@
PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1);
PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 1.0f);
PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 1.0f);
- ObjectAnimator oa = ObjectAnimator.ofPropertyValuesHolder(this, alpha, scaleX, scaleY);
+ final ObjectAnimator oa = mOpenCloseAnimator =
+ ObjectAnimator.ofPropertyValuesHolder(this, alpha, scaleX, scaleY);
oa.addListener(new AnimatorListenerAdapter() {
@Override
@@ -430,7 +432,7 @@
@Override
public void onAnimationEnd(Animator animation) {
mState = STATE_OPEN;
-
+ setLayerType(LAYER_TYPE_NONE, null);
Cling cling = mLauncher.showFirstRunFoldersCling();
if (cling != null) {
cling.bringToFront();
@@ -439,7 +441,16 @@
}
});
oa.setDuration(mExpandDuration);
- oa.start();
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ buildLayer();
+ post(new Runnable() {
+ public void run() {
+ // Check if the animator changed in the meantime
+ if (oa != mOpenCloseAnimator)
+ return;
+ oa.start();
+ }
+ });
}
private void sendCustomAccessibilityEvent(int type, String text) {
@@ -465,12 +476,14 @@
PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 0);
PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 0.9f);
PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 0.9f);
- ObjectAnimator oa = ObjectAnimator.ofPropertyValuesHolder(this, alpha, scaleX, scaleY);
+ final ObjectAnimator oa = mOpenCloseAnimator =
+ ObjectAnimator.ofPropertyValuesHolder(this, alpha, scaleX, scaleY);
oa.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
onCloseComplete();
+ setLayerType(LAYER_TYPE_NONE, null);
mState = STATE_SMALL;
}
@Override
@@ -481,7 +494,16 @@
}
});
oa.setDuration(mExpandDuration);
- oa.start();
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ buildLayer();
+ post(new Runnable() {
+ public void run() {
+ // Check if the animator changed in the meantime
+ if (oa != mOpenCloseAnimator)
+ return;
+ oa.start();
+ }
+ });
}
void notifyDataSetChanged() {
diff --git a/src/com/android/launcher2/SearchDropTargetBar.java b/src/com/android/launcher2/SearchDropTargetBar.java
index a01fd3a..77681a8 100644
--- a/src/com/android/launcher2/SearchDropTargetBar.java
+++ b/src/com/android/launcher2/SearchDropTargetBar.java
@@ -18,7 +18,6 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Rect;
@@ -26,7 +25,6 @@
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
-import android.view.animation.DecelerateInterpolator;
import android.widget.FrameLayout;
import com.android.launcher.R;
@@ -40,10 +38,10 @@
private static final int sTransitionInDuration = 200;
private static final int sTransitionOutDuration = 175;
- private ObjectAnimator mDropTargetBarFadeInAnim;
- private ObjectAnimator mDropTargetBarFadeOutAnim;
- private ObjectAnimator mQSBSearchBarFadeInAnim;
- private ObjectAnimator mQSBSearchBarFadeOutAnim;
+ private ObjectAnimator mDropTargetBarAnim;
+ private ObjectAnimator mQSBSearchBarAnim;
+ private static final AccelerateInterpolator sAccelerateInterpolator =
+ new AccelerateInterpolator();
private boolean mIsSearchBarHidden;
private View mQSBSearchBar;
@@ -75,28 +73,19 @@
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
+ // Enable the hw layers before the animation starts (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) {
- in.setInterpolator(new AccelerateInterpolator());
- in.setDuration(sTransitionInDuration);
- in.addListener(new AnimatorListenerAdapter() {
- @Override
- public void onAnimationStart(Animator animation) {
- v.setVisibility(View.VISIBLE);
- }
- });
- out.setInterpolator(new AccelerateInterpolator());
- out.setDuration(sTransitionOutDuration);
- out.addListener(new AnimatorListenerAdapter() {
+ private void setupAnimation(ObjectAnimator anim, final View v) {
+ anim.setInterpolator(sAccelerateInterpolator);
+ anim.setDuration(sTransitionInDuration);
+ anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- v.setVisibility(View.INVISIBLE);
v.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
@@ -122,64 +111,55 @@
// Create the various fade animations
if (mEnableDropDownDropTargets) {
mDropTargetBar.setTranslationY(-mBarHeight);
- mDropTargetBarFadeInAnim = ObjectAnimator.ofFloat(mDropTargetBar, "translationY", 0f);
- mDropTargetBarFadeOutAnim = ObjectAnimator.ofFloat(mDropTargetBar, "translationY",
- -mBarHeight);
- mQSBSearchBarFadeInAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "translationY", 0);
- mQSBSearchBarFadeOutAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "translationY",
+ mDropTargetBarAnim = ObjectAnimator.ofFloat(mDropTargetBar, "translationY",
+ -mBarHeight, 0f);
+ mQSBSearchBarAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "translationY", 0,
-mBarHeight);
} else {
mDropTargetBar.setAlpha(0f);
- mDropTargetBarFadeInAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 1f);
- mDropTargetBarFadeOutAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 0f);
- mQSBSearchBarFadeInAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "alpha", 1f);
- mQSBSearchBarFadeOutAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "alpha", 0f);
+ mDropTargetBarAnim = ObjectAnimator.ofFloat(mDropTargetBar, "alpha", 0f, 1f);
+ mQSBSearchBarAnim = ObjectAnimator.ofFloat(mQSBSearchBar, "alpha", 1f, 0f);
}
- prepareAnimation(mDropTargetBarFadeInAnim, mDropTargetBarFadeOutAnim, mDropTargetBar);
- prepareAnimation(mQSBSearchBarFadeInAnim, mQSBSearchBarFadeOutAnim, mQSBSearchBar);
+ setupAnimation(mDropTargetBarAnim, mDropTargetBar);
+ setupAnimation(mQSBSearchBarAnim, mQSBSearchBar);
}
public void finishAnimations() {
- mDropTargetBarFadeInAnim.end();
- mDropTargetBarFadeOutAnim.end();
- mQSBSearchBarFadeInAnim.end();
- mQSBSearchBarFadeOutAnim.end();
- }
-
- private void cancelSearchBarAnimations() {
- mQSBSearchBarFadeInAnim.cancel();
- mQSBSearchBarFadeOutAnim.cancel();
+ prepareStartAnimation(mDropTargetBar);
+ mDropTargetBarAnim.reverse();
+ prepareStartAnimation(mQSBSearchBar);
+ mQSBSearchBarAnim.reverse();
}
/*
* Shows and hides the search bar.
*/
public void showSearchBar(boolean animated) {
- cancelSearchBarAnimations();
+ if (!mIsSearchBarHidden) return;
if (animated) {
prepareStartAnimation(mQSBSearchBar);
- mQSBSearchBarFadeInAnim.start();
+ mQSBSearchBarAnim.reverse();
} else {
- mQSBSearchBar.setVisibility(View.VISIBLE);
+ mQSBSearchBarAnim.cancel();
if (mEnableDropDownDropTargets) {
mQSBSearchBar.setTranslationY(0);
} else {
- mQSBSearchBar.setAlpha(1f);
+ mDropTargetBar.setAlpha(1f);
}
}
mIsSearchBarHidden = false;
}
public void hideSearchBar(boolean animated) {
- cancelSearchBarAnimations();
+ if (mIsSearchBarHidden) return;
if (animated) {
prepareStartAnimation(mQSBSearchBar);
- mQSBSearchBarFadeOutAnim.start();
+ mQSBSearchBarAnim.start();
} else {
- mQSBSearchBar.setVisibility(View.INVISIBLE);
+ mQSBSearchBarAnim.cancel();
if (mEnableDropDownDropTargets) {
- mQSBSearchBar.setTranslationY(0);
+ mQSBSearchBar.setTranslationY(-mBarHeight);
} else {
- mQSBSearchBar.setAlpha(0f);
+ mDropTargetBar.setAlpha(0f);
}
}
mIsSearchBarHidden = true;
@@ -202,12 +182,10 @@
public void onDragStart(DragSource source, Object info, int dragAction) {
// Animate out the QSB search bar, and animate in the drop target bar
prepareStartAnimation(mDropTargetBar);
- mDropTargetBarFadeOutAnim.cancel();
- mDropTargetBarFadeInAnim.start();
+ mDropTargetBarAnim.start();
if (!mIsSearchBarHidden) {
prepareStartAnimation(mQSBSearchBar);
- mQSBSearchBarFadeInAnim.cancel();
- mQSBSearchBarFadeOutAnim.start();
+ mQSBSearchBarAnim.start();
}
}
@@ -220,12 +198,10 @@
if (!mDeferOnDragEnd) {
// Restore the QSB search bar, and animate out the drop target bar
prepareStartAnimation(mDropTargetBar);
- mDropTargetBarFadeInAnim.cancel();
- mDropTargetBarFadeOutAnim.start();
+ mDropTargetBarAnim.reverse();
if (!mIsSearchBarHidden) {
prepareStartAnimation(mQSBSearchBar);
- mQSBSearchBarFadeOutAnim.cancel();
- mQSBSearchBarFadeInAnim.start();
+ mQSBSearchBarAnim.reverse();
}
} else {
mDeferOnDragEnd = false;