diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java
index 9e84760..d731786 100644
--- a/src/com/android/dialer/list/PhoneFavoriteFragment.java
+++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java
@@ -143,7 +143,6 @@
         @Override
         public void onScrollStateChanged(AbsListView view, int scrollState) {
             mActivityScrollListener.onListFragmentScrollStateChange(scrollState);
-            mLastScrollState = scrollState;
         }
     }
 
@@ -186,8 +185,6 @@
             new ContactTileLoaderListener();
     private final ScrollListener mScrollListener = new ScrollListener();
 
-    private int mLastScrollState = ListView.OnScrollListener.SCROLL_STATE_IDLE;
-
     @Override
     public void onAttach(Activity activity) {
         if (DEBUG) Log.d(TAG, "onAttach()");
@@ -453,8 +450,7 @@
      * animations will be performed instead.
      */
     private void animateListView(final long... idsInPlace) {
-        if (mItemIdTopMap.isEmpty() ||
-                mLastScrollState == ListView.OnScrollListener.SCROLL_STATE_FLING) {
+        if (mItemIdTopMap.isEmpty()) {
             // Don't do animations if the database is being queried for the first time and
             // the previous item offsets have not been cached, or the user hasn't done anything
             // (dragging, swiping etc) that requires an animation.
@@ -501,10 +497,10 @@
                             startTop = top + (i > 0 ? childHeight : -childHeight);
                             delta = startTop - top;
                         } else {
-                            // In the case the first non-square row is pushed down
+                            // In case the first non-square row is pushed down
                             // from the square section.
                             animators.add(ObjectAnimator.ofFloat(
-                                    child, "translationX", -child.getWidth(), 0.0f));
+                                    child, "alpha", 0.0f, 1.0f));
                         }
                         if (DEBUG) {
                             Log.d(TAG, "Found itemId: " + itemId + " for listview child " + i +
