Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
index ed11493337fe0f4008eec88bed92d6fe67ca255d..94fe6e3489884beedfcff05708415df7a8e288a3 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
@@ -4,6 +4,8 @@ |
package org.chromium.chrome.browser.appmenu; |
+import android.animation.Animator; |
+import android.animation.AnimatorSet; |
import android.content.Context; |
import android.content.res.Resources; |
import android.graphics.Rect; |
@@ -147,6 +149,15 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
mPopup.getListView().setVerticalFadingEdgeEnabled(true); |
mPopup.getListView().setFadingEdgeLength(mVerticalFadeDistance); |
} |
+ |
+ mPopup.getListView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { |
+ @Override |
+ public void onLayoutChange(View v, int left, int top, int right, int bottom, |
+ int oldLeft, int oldTop, int oldRight, int oldBottom) { |
+ mPopup.getListView().removeOnLayoutChangeListener(this); |
+ runMenuItemEnterAnimations(); |
+ } |
+ }); |
} |
private void setPopupOffset(ListPopupWindow popup, int screenRotation, Rect appRect) { |
@@ -225,7 +236,9 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
*/ |
void dismiss() { |
mHandler.appMenuDismissed(); |
- if (isShowing()) mPopup.dismiss(); |
+ if (isShowing()) { |
+ mPopup.dismiss(); |
+ } |
} |
/** |
@@ -277,4 +290,24 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
mPopup.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
} |
} |
+ |
+ private void runMenuItemEnterAnimations() { |
+ AnimatorSet animation = new AnimatorSet(); |
+ AnimatorSet.Builder builder = null; |
+ |
+ ViewGroup list = mPopup.getListView(); |
+ for (int i = 0; i < list.getChildCount(); i++) { |
+ View view = list.getChildAt(i); |
+ Object animatorObject = view.getTag(R.id.menu_item_enter_anim_id); |
+ if (animatorObject != null) { |
+ if (builder == null) { |
+ builder = animation.play((Animator) animatorObject); |
+ } else { |
+ builder.with((Animator) animatorObject); |
+ } |
+ } |
+ } |
+ |
+ animation.start(); |
+ } |
} |