Show reactions above selected message.

fork-5.53.8
Rashad Sookram 2022-02-04 13:40:45 -05:00
rodzic a2bf15d105
commit c4c43ee958
3 zmienionych plików z 34 dodań i 15 usunięć

Wyświetl plik

@ -1476,6 +1476,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
focusedView);
bodyBubble.setVisibility(View.INVISIBLE);
conversationItem.reactionsView.setVisibility(View.INVISIBLE);
ViewUtil.hideKeyboard(requireContext(), conversationItem);
@ -1510,6 +1511,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
}
bodyBubble.setVisibility(View.VISIBLE);
conversationItem.reactionsView.setVisibility(View.VISIBLE);
if (showScrollButtons) {
conversationViewModel.setShowScrollButtons(true);

Wyświetl plik

@ -242,6 +242,10 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
parent.invalidate();
}
});
reactionsView.animate()
.scaleX(LONG_PRESS_SCALE_FACTOR)
.scaleY(LONG_PRESS_SCALE_FACTOR);
}
};
@ -377,6 +381,9 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
bodyBubble.animate()
.scaleX(1.0f)
.scaleY(1.0f);
reactionsView.animate()
.scaleX(1.0f)
.scaleY(1.0f);
break;
}

Wyświetl plik

@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.conversation
import android.graphics.Bitmap
import android.graphics.Path
import android.view.View
import android.view.ViewGroup
import androidx.core.graphics.applyCanvas
import androidx.core.graphics.createBitmap
@ -10,6 +9,7 @@ import androidx.core.graphics.withClip
import androidx.core.graphics.withTranslation
import androidx.core.view.children
import androidx.recyclerview.widget.RecyclerView
import org.signal.core.util.DimensionUnit
import org.thoughtcrime.securesms.database.model.MessageRecord
import org.thoughtcrime.securesms.util.hasNoBubble
@ -30,6 +30,7 @@ object ConversationItemSelection {
list = list,
videoBitmap = videoBitmap,
drawConversationItem = !isOutgoing || hasNoBubble,
hasReaction = messageRecord.reactions.isNotEmpty(),
)
}
@ -38,22 +39,21 @@ object ConversationItemSelection {
list: RecyclerView,
videoBitmap: Bitmap?,
drawConversationItem: Boolean,
hasReaction: Boolean,
): Bitmap {
val initialReactionVisibility = conversationItem.reactionsView.visibility
if (initialReactionVisibility == View.VISIBLE) {
conversationItem.reactionsView.visibility = View.INVISIBLE
}
val bodyBubble = conversationItem.bodyBubble
val reactionsView = conversationItem.reactionsView
val originalScale = conversationItem.bodyBubble.scaleX
conversationItem.bodyBubble.scaleX = 1.0f
conversationItem.bodyBubble.scaleY = 1.0f
val originalScale = bodyBubble.scaleX
bodyBubble.scaleX = 1.0f
bodyBubble.scaleY = 1.0f
val projections = conversationItem.getColorizerProjections(list)
val path = Path()
val xTranslation = -conversationItem.x - conversationItem.bodyBubble.x
val yTranslation = -conversationItem.y - conversationItem.bodyBubble.y
val xTranslation = -conversationItem.x - bodyBubble.x
val yTranslation = -conversationItem.y - bodyBubble.y
val mp4Projection = conversationItem.getGiphyMp4PlayableProjection(list)
var scaledVideoBitmap = videoBitmap
@ -80,9 +80,13 @@ object ConversationItemSelection {
conversationItem.destroyAllDrawingCaches()
return createBitmap(conversationItem.bodyBubble.width, conversationItem.bodyBubble.height).applyCanvas {
var bitmapHeight = bodyBubble.height
if (hasReaction) {
bitmapHeight += (reactionsView.height - DimensionUnit.DP.toPixels(4f)).toInt()
}
return createBitmap(bodyBubble.width, bitmapHeight).applyCanvas {
if (drawConversationItem) {
conversationItem.bodyBubble.draw(this)
bodyBubble.draw(this)
}
withClip(path) {
@ -94,11 +98,17 @@ object ConversationItemSelection {
}
}
}
withTranslation(
x = reactionsView.x - bodyBubble.x,
y = reactionsView.y - bodyBubble.y
) {
reactionsView.draw(this)
}
}.also {
mp4Projection.release()
conversationItem.reactionsView.visibility = initialReactionVisibility
conversationItem.bodyBubble.scaleX = originalScale
conversationItem.bodyBubble.scaleY = originalScale
bodyBubble.scaleX = originalScale
bodyBubble.scaleY = originalScale
}
}
}