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;
}