Use the correct item animating height depending on view, device

Fixes issues where animating items are sometimes the wrong height.

Change-Id: I407294e8fdae5cc560897368d48140d442ee5cd8
diff --git a/res/layout/conversation_item_view_normal.xml b/res/layout/conversation_item_view_normal.xml
index e7f667b..c30d699 100644
--- a/res/layout/conversation_item_view_normal.xml
+++ b/res/layout/conversation_item_view_normal.xml
@@ -24,7 +24,7 @@
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="70sp"
+    android:layout_height="@dimen/conversation_item_height"
     android:orientation="vertical">
     <RelativeLayout
         android:layout_width="match_parent"
diff --git a/res/layout/conversation_item_view_wide.xml b/res/layout/conversation_item_view_wide.xml
index b748ca4..d9b77f4 100644
--- a/res/layout/conversation_item_view_wide.xml
+++ b/res/layout/conversation_item_view_wide.xml
@@ -25,7 +25,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="64sp"
+    android:minHeight="@dimen/conversation_item_height_wide"
     android:orientation="horizontal">
     <ImageView
         android:id="@+id/checkmark"
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index c36dc3f..714532b 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -79,4 +79,6 @@
     <dimen name="widget_margin_left">17dip</dimen>
     <dimen name="widget_margin_right">17dip</dimen>
     <dimen name="widget_margin_bottom">22dip</dimen>
+    <dimen name="conversation_item_height">70sp</dimen>
+    <dimen name="conversation_item_height_wide">64sp</dimen>
 </resources>
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index 7dd476a..c2fd3ec 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -1097,10 +1097,11 @@
      *
      * @param listener
      */
-    public void startUndoAnimation(final AnimatorListener listener) {
-        setMinimumHeight(140);
+    public void startUndoAnimation(ViewMode viewMode, final AnimatorListener listener) {
+        int minHeight = ConversationItemViewCoordinates.getMinHeight(mContext, viewMode);
+        setMinimumHeight(minHeight);
         final int start = 0 ;
-        final int end = 140;
+        final int end = minHeight;
         ObjectAnimator undoAnimator = ObjectAnimator.ofInt(this, "animatedHeight", start, end);
         Animator fadeAnimator = ObjectAnimator.ofFloat(this, "itemAlpha", 0, 1.0f);
         mAnimatedHeight = start;
diff --git a/src/com/android/mail/browse/ConversationItemViewCoordinates.java b/src/com/android/mail/browse/ConversationItemViewCoordinates.java
index 338c886..0afc443 100644
--- a/src/com/android/mail/browse/ConversationItemViewCoordinates.java
+++ b/src/com/android/mail/browse/ConversationItemViewCoordinates.java
@@ -102,6 +102,9 @@
     int replyStateX;
     int replyStateY;
 
+    // Minimum height of this view; used for animating.
+    int minHeight;
+
 
     // Cache to save Coordinates based on view width.
     private static SparseArray<ConversationItemViewCoordinates> mCache =
@@ -397,4 +400,11 @@
     public static boolean isWideMode(int mode) {
         return mode == WIDE_MODE;
     }
+
+    public static int getMinHeight(Context context, ViewMode viewMode) {
+        int mode = ConversationItemViewCoordinates.getMode(context, viewMode);
+        return context.getResources().getDimensionPixelSize(
+                mode == WIDE_MODE ? R.dimen.conversation_item_height
+                        : R.dimen.conversation_item_height_wide);
+    }
 }
diff --git a/src/com/android/mail/ui/AnimatedAdapter.java b/src/com/android/mail/ui/AnimatedAdapter.java
index 4731761..18433ae 100644
--- a/src/com/android/mail/ui/AnimatedAdapter.java
+++ b/src/com/android/mail/ui/AnimatedAdapter.java
@@ -234,12 +234,12 @@
             // had been destroyed.
             ConversationItemView convView = (ConversationItemView) super.getView(position, null,
                     parent);
-            convView.startUndoAnimation(this);
+            convView.startUndoAnimation(mViewMode, this);
             return convView;
         } else {
             // Destroying a conversation just shows a blank shrinking item.
             final AnimatingItemView view = new AnimatingItemView(mContext);
-            view.startAnimation(conversation, this);
+            view.startAnimation(conversation, mViewMode, this);
             return view;
         }
     }
diff --git a/src/com/android/mail/ui/AnimatingItemView.java b/src/com/android/mail/ui/AnimatingItemView.java
index 482986e..13371a9 100644
--- a/src/com/android/mail/ui/AnimatingItemView.java
+++ b/src/com/android/mail/ui/AnimatingItemView.java
@@ -23,6 +23,7 @@
 import android.view.animation.DecelerateInterpolator;
 import android.widget.LinearLayout;
 
+import com.android.mail.browse.ConversationItemViewCoordinates;
 import com.android.mail.providers.Conversation;
 
 public class AnimatingItemView extends LinearLayout {
@@ -41,10 +42,11 @@
      * @param undo true if an operation is being undone. We animate the item away during delete.
      * Undoing populates the item.
      */
-    public void startAnimation(Conversation item, AnimatorListener listener) {
+    public void startAnimation(Conversation item, ViewMode viewMode, AnimatorListener listener) {
         mData = item;
-        setMinimumHeight(140);
-        final int start = 140;
+        int minHeight = ConversationItemViewCoordinates.getMinHeight(getContext(), viewMode);
+        setMinimumHeight(minHeight);
+        final int start = minHeight;
         final int end = 0;
 
         mAnimator = ObjectAnimator.ofInt(this, "animatedHeight", start, end);
@@ -55,7 +57,6 @@
         mAnimator.start();
     }
 
-
     public Conversation getData() {
         return mData;
     }