kopia lustrzana https://github.com/ryukoposting/Signal-Android
Show reactions above selected message.
rodzic
a2bf15d105
commit
c4c43ee958
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue