diff options
author | Michael Jurka <mikejurka@google.com> | 2012-05-31 12:28:48 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-31 12:28:48 -0700 |
commit | 78a4b7993b95d0f0270a0bb0ce58355fe5963e97 (patch) | |
tree | 48f08e7f36871201361aae521cf5db4ece968254 /src | |
parent | 3dcd79ecb39af92b94ac7f41558c2743a51f0596 (diff) | |
parent | 0121c3ea3d5bae176af193ea8ef23ae8a868dd31 (diff) | |
download | android_packages_apps_Trebuchet-78a4b7993b95d0f0270a0bb0ce58355fe5963e97.tar.gz android_packages_apps_Trebuchet-78a4b7993b95d0f0270a0bb0ce58355fe5963e97.tar.bz2 android_packages_apps_Trebuchet-78a4b7993b95d0f0270a0bb0ce58355fe5963e97.zip |
Merge "Making folders open/close smoothly" into jb-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/Folder.java | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 92cabe5a4..db65a31ee 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -106,6 +106,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private static String sDefaultFolderName; private static String sHintText; + private ObjectAnimator mOpenCloseAnimator; /** * Used to inflate the Workspace from XML. @@ -417,7 +418,8 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList 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 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList @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 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } }); 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 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList 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 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } }); 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() { |