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"
tools:visibility="visible">
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
<org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_secondary"
android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="bottom"
android:background="?attr/reactions_recv_background"
android:gravity="center"
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
android:padding="6dp"
android:background="?attr/reactions_recv_background" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
<org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_primary"
android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="top"
android:background="?attr/reactions_recv_background"
android:gravity="center"
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
android:padding="6dp"
android:background="?attr/reactions_recv_background" />
</org.thoughtcrime.securesms.components.MaxHeightFrameLayout>

View file

@ -200,27 +200,21 @@
app:mhfl_maxHeight="@dimen/reactions_bubble_container_max_height"
tools:visibility="visible">
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
<org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_secondary"
android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="bottom"
android:background="?attr/reactions_recv_background"
android:gravity="center"
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
android:padding="6dp"
android:background="?attr/reactions_recv_background" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
<org.thoughtcrime.securesms.components.emoji.EmojiImageView
android:id="@+id/reactions_bubbles_primary"
android:layout_width="@dimen/reactions_bubble_size"
android:layout_height="@dimen/reactions_bubble_size"
android:layout_gravity="top"
android:background="?attr/reactions_recv_background"
android:gravity="center"
android:includeFontPadding="false"
android:textSize="@dimen/reactions_bubble_text_size"
tools:ignore="SpUsage" />
android:padding="6dp"
android:background="?attr/reactions_recv_background" />
</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 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.recipients.Recipient;
import org.thoughtcrime.securesms.util.ThemeUtil;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
final class ConversationItemReactionBubbles {
private final ViewGroup reactionsContainer;
private final EmojiTextView primaryEmojiReaction;
private final EmojiTextView secondaryEmojiReaction;
private final ViewGroup reactionsContainer;
private final EmojiImageView primaryEmojiReaction;
private final EmojiImageView secondaryEmojiReaction;
ConversationItemReactionBubbles(@NonNull ViewGroup reactionsContainer) {
this.reactionsContainer = reactionsContainer;
@ -81,7 +80,7 @@ final class ConversationItemReactionBubbles {
primaryEmojiReaction.setVisibility(View.VISIBLE);
secondaryEmojiReaction.setVisibility(View.GONE);
primaryEmojiReaction.setText(reactionInfo.emoji);
primaryEmojiReaction.setImageEmoji(reactionInfo.emoji);
primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(reactionInfo));
}
@ -91,9 +90,9 @@ final class ConversationItemReactionBubbles {
secondaryEmojiReaction.setVisibility(View.VISIBLE);
Pair<ReactionInfo, ReactionInfo> primaryAndSecondaryReactions = getPrimaryAndSecondaryReactions(reactionInfos);
primaryEmojiReaction.setText(primaryAndSecondaryReactions.first.emoji);
primaryEmojiReaction.setImageEmoji(primaryAndSecondaryReactions.first.emoji);
primaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.first));
secondaryEmojiReaction.setText(primaryAndSecondaryReactions.second.emoji);
secondaryEmojiReaction.setImageEmoji(primaryAndSecondaryReactions.second.emoji);
secondaryEmojiReaction.setBackground(getBackgroundDrawableForReactionBubble(primaryAndSecondaryReactions.second));
}