Display reactions in ImageView instead of TextView on message bubbles.

This commit is contained in:
Alex Hart 2019-12-05 08:54:26 -04:00 committed by Greyson Parrelli
parent 9f8a110428
commit 1cc8634cc7
4 changed files with 39 additions and 32 deletions

View file

@ -243,27 +243,21 @@
app:mhfl_maxHeight="@dimen/reactions_bubble_container_max_height" app:mhfl_maxHeight="@dimen/reactions_bubble_container_max_height"
tools:visibility="visible"> tools:visibility="visible">
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_secondary" android:id="@+id/reactions_bubbles_secondary"
android:layout_width="@dimen/reactions_bubble_size" android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size" android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:background="?attr/reactions_recv_background" android:padding="6dp"
android:gravity="center" android:background="?attr/reactions_recv_background" />
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_primary" android:id="@+id/reactions_bubbles_primary"
android:layout_width="@dimen/reactions_bubble_size" android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size" android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="top" android:layout_gravity="top"
android:background="?attr/reactions_recv_background" android:padding="6dp"
android:gravity="center" android:background="?attr/reactions_recv_background" />
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
</org.thoughtcrime.securesms.components.MaxHeightFrameLayout> </org.thoughtcrime.securesms.components.MaxHeightFrameLayout>

View file

@ -200,27 +200,21 @@
app:mhfl_maxHeight="@dimen/reactions_bubble_container_max_height" app:mhfl_maxHeight="@dimen/reactions_bubble_container_max_height"
tools:visibility="visible"> tools:visibility="visible">
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_secondary" android:id="@+id/reactions_bubbles_secondary"
android:layout_width="@dimen/reactions_bubble_size" android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size" android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:background="?attr/reactions_recv_background" android:padding="6dp"
android:gravity="center" android:background="?attr/reactions_recv_background" />
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView <org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_primary" android:id="@+id/reactions_bubbles_primary"
android:layout_width="@dimen/reactions_bubble_size" android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size" android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="top" android:layout_gravity="top"
android:background="?attr/reactions_recv_background" android:padding="6dp"
android:gravity="center" android:background="?attr/reactions_recv_background" />
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
</org.thoughtcrime.securesms.components.MaxHeightFrameLayout> </org.thoughtcrime.securesms.components.MaxHeightFrameLayout>

View file

@ -0,0 +1,20 @@
package org.thoughtcrime.securesms.components.emoji;
import android.content.Context;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatImageView;
public class EmojiImageView extends AppCompatImageView {
public EmojiImageView(Context context) {
super(context);
}
public EmojiImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setImageEmoji(CharSequence emoji) {
setImageDrawable(EmojiProvider.getInstance(getContext()).getEmojiDrawable(emoji));
}
}

View file

@ -9,23 +9,22 @@ import androidx.annotation.Nullable;
import androidx.core.util.Pair; import androidx.core.util.Pair;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiTextView; import org.thoughtcrime.securesms.components.emoji.EmojiImageView;
import org.thoughtcrime.securesms.database.model.ReactionRecord; import org.thoughtcrime.securesms.database.model.ReactionRecord;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.ThemeUtil;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
final class ConversationItemReactionBubbles { final class ConversationItemReactionBubbles {
private final ViewGroup reactionsContainer; private final ViewGroup reactionsContainer;
private final EmojiTextView primaryEmojiReaction; private final EmojiImageView primaryEmojiReaction;
private final EmojiTextView secondaryEmojiReaction; private final EmojiImageView secondaryEmojiReaction;
ConversationItemReactionBubbles(@NonNull ViewGroup reactionsContainer) { ConversationItemReactionBubbles(@NonNull ViewGroup reactionsContainer) {
this.reactionsContainer = reactionsContainer; this.reactionsContainer = reactionsContainer;
@ -81,7 +80,7 @@ final class ConversationItemReactionBubbles {
primaryEmojiReaction.setVisibility(View.VISIBLE); primaryEmojiReaction.setVisibility(View.VISIBLE);
secondaryEmojiReaction.setVisibility(View.GONE); secondaryEmojiReaction.setVisibility(View.GONE);
primaryEmojiReaction.setText(reactionInfo.emoji); primaryEmojiReaction.setImageEmoji(reactionInfo.emoji);
primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(reactionInfo)); primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(reactionInfo));
} }
@ -91,9 +90,9 @@ final class ConversationItemReactionBubbles {
secondaryEmojiReaction.setVisibility(View.VISIBLE); secondaryEmojiReaction.setVisibility(View.VISIBLE);
Pair<ReactionInfo, ReactionInfo> primaryAndSecondaryReactions = getPrimaryAndSecondaryReactions(reactionInfos); Pair<ReactionInfo, ReactionInfo> primaryAndSecondaryReactions = getPrimaryAndSecondaryReactions(reactionInfos);
primaryEmojiReaction.setText(primaryAndSecondaryReactions.first.emoji); primaryEmojiReaction.setImageEmoji(primaryAndSecondaryReactions.first.emoji);
primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.first)); primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.first));
secondaryEmojiReaction.setText(primaryAndSecondaryReactions.second.emoji); secondaryEmojiReaction.setImageEmoji(primaryAndSecondaryReactions.second.emoji);
secondaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.second)); secondaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.second));
} }