Display reactions in ImageView instead of TextView on message bubbles.
This commit is contained in:
parent
9f8a110428
commit
1cc8634cc7
4 changed files with 39 additions and 32 deletions
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue