Loading core/java/com/android/internal/widget/ConversationLayout.java +15 −27 Original line number Original line Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.os.Bundle; import android.os.Parcelable; import android.os.Parcelable; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AttributeSet; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Gravity; Loading Loading @@ -537,37 +536,26 @@ public class ConversationLayout extends FrameLayout } } private void updateImageMessages() { private void updateImageMessages() { boolean displayExternalImage = false; View newMessage = null; ArraySet<View> newMessages = new ArraySet<>(); if (mIsCollapsed && mGroups.size() > 0) { if (mIsCollapsed) { // When collapsed, we're displaying all image messages in a dedicated container // When collapsed, we're displaying the image message in a dedicated container // on the right of the layout instead of inline. Let's add all isolated images there // on the right of the layout instead of inline. Let's add the isolated image there int imageIndex = 0; MessagingGroup messagingGroup = mGroups.get(mGroups.size() -1); for (int i = 0; i < mGroups.size(); i++) { MessagingGroup messagingGroup = mGroups.get(i); MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); if (isolatedMessage != null) { if (isolatedMessage != null) { newMessages.add(isolatedMessage.getView()); newMessage = isolatedMessage.getView(); displayExternalImage = true; if (imageIndex != mImageMessageContainer.indexOfChild(isolatedMessage.getView())) { mImageMessageContainer.removeView(isolatedMessage.getView()); mImageMessageContainer.addView(isolatedMessage.getView(), imageIndex); } imageIndex++; } } } } } // Remove all messages that don't belong into the image layout // Remove all messages that don't belong into the image layout for (int i = 0; i < mImageMessageContainer.getChildCount(); i++) { View previousMessage = mImageMessageContainer.getChildAt(0); View child = mImageMessageContainer.getChildAt(i); if (previousMessage != newMessage) { if (!newMessages.contains(child)) { mImageMessageContainer.removeView(previousMessage); mImageMessageContainer.removeView(child); if (newMessage != null) { i--; mImageMessageContainer.addView(newMessage); } } } } mImageMessageContainer.setVisibility(displayExternalImage ? VISIBLE : GONE); mImageMessageContainer.setVisibility(newMessage != null ? VISIBLE : GONE); } } private void bindFacePile() { private void bindFacePile() { Loading Loading
core/java/com/android/internal/widget/ConversationLayout.java +15 −27 Original line number Original line Diff line number Diff line Loading @@ -40,7 +40,6 @@ import android.os.Bundle; import android.os.Parcelable; import android.os.Parcelable; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AttributeSet; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Gravity; Loading Loading @@ -537,37 +536,26 @@ public class ConversationLayout extends FrameLayout } } private void updateImageMessages() { private void updateImageMessages() { boolean displayExternalImage = false; View newMessage = null; ArraySet<View> newMessages = new ArraySet<>(); if (mIsCollapsed && mGroups.size() > 0) { if (mIsCollapsed) { // When collapsed, we're displaying all image messages in a dedicated container // When collapsed, we're displaying the image message in a dedicated container // on the right of the layout instead of inline. Let's add all isolated images there // on the right of the layout instead of inline. Let's add the isolated image there int imageIndex = 0; MessagingGroup messagingGroup = mGroups.get(mGroups.size() -1); for (int i = 0; i < mGroups.size(); i++) { MessagingGroup messagingGroup = mGroups.get(i); MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); if (isolatedMessage != null) { if (isolatedMessage != null) { newMessages.add(isolatedMessage.getView()); newMessage = isolatedMessage.getView(); displayExternalImage = true; if (imageIndex != mImageMessageContainer.indexOfChild(isolatedMessage.getView())) { mImageMessageContainer.removeView(isolatedMessage.getView()); mImageMessageContainer.addView(isolatedMessage.getView(), imageIndex); } imageIndex++; } } } } } // Remove all messages that don't belong into the image layout // Remove all messages that don't belong into the image layout for (int i = 0; i < mImageMessageContainer.getChildCount(); i++) { View previousMessage = mImageMessageContainer.getChildAt(0); View child = mImageMessageContainer.getChildAt(i); if (previousMessage != newMessage) { if (!newMessages.contains(child)) { mImageMessageContainer.removeView(previousMessage); mImageMessageContainer.removeView(child); if (newMessage != null) { i--; mImageMessageContainer.addView(newMessage); } } } } mImageMessageContainer.setVisibility(displayExternalImage ? VISIBLE : GONE); mImageMessageContainer.setVisibility(newMessage != null ? VISIBLE : GONE); } } private void bindFacePile() { private void bindFacePile() { Loading