From f51f7ef4128a8bb850ff0349d72d5119a4d3b615 Mon Sep 17 00:00:00 2001 From: klaus Date: Sun, 27 Oct 2024 23:35:21 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=B0=A9=20-=20?= =?UTF-8?q?=ED=95=98=ED=8A=B8=20=EC=95=8C=EB=A6=BC=20=EB=B0=94(=EC=B1=84?= =?UTF-8?q?=ED=8C=85)=20=EB=B0=B0=EA=B2=BD,=20=EB=8B=89=EB=84=A4=EC=9E=84,?= =?UTF-8?q?=20=EA=B8=80=EC=9E=90=EC=83=89=20=EB=B3=80=EA=B2=BD=20-=20?= =?UTF-8?q?=ED=95=98=ED=8A=B8=20=EC=95=8C=EB=A6=BC=20=EB=B0=94=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EC=88=98=EC=A0=95=20:=20=EC=B1=84=ED=8C=85=20->=20?= =?UTF-8?q?=EA=B3=B5=EC=A7=80=20=EB=B0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomActivity.kt | 74 +++++++++++++++++-- .../sodalive/live/room/chat/LiveRoomChat.kt | 36 --------- .../drawable/bg_round_corner_4_7_ccffffff.xml | 8 -- .../main/res/layout/activity_live_room.xml | 15 ++++ app/src/main/res/values/colors.xml | 2 + 5 files changed, 83 insertions(+), 52 deletions(-) delete mode 100644 app/src/main/res/drawable/bg_round_corner_4_7_ccffffff.xml diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt index 90fd8ac7..d892c008 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt @@ -9,6 +9,7 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.graphics.Rect +import android.graphics.Typeface import android.graphics.drawable.Drawable import android.net.Uri import android.os.Build @@ -18,8 +19,11 @@ import android.os.Handler import android.os.Looper import android.text.Spannable import android.text.SpannableString +import android.text.Spanned import android.text.method.LinkMovementMethod import android.text.style.ClickableSpan +import android.text.style.ForegroundColorSpan +import android.text.style.StyleSpan import android.view.LayoutInflater import android.view.View import android.view.animation.AccelerateDecelerateInterpolator @@ -74,7 +78,6 @@ import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatRawMessage import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatRawMessageType import kr.co.vividnext.sodalive.live.room.chat.LiveRoomDonationChat import kr.co.vividnext.sodalive.live.room.chat.LiveRoomDonationStatusChat -import kr.co.vividnext.sodalive.live.room.chat.LiveRoomHeartDonationChat import kr.co.vividnext.sodalive.live.room.chat.LiveRoomJoinChat import kr.co.vividnext.sodalive.live.room.chat.LiveRoomNormalChat import kr.co.vividnext.sodalive.live.room.chat.LiveRoomRouletteDonationChat @@ -129,7 +132,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB private var isHost = false private var isNoChatting = false - private var remainingNoChattingTime = noChattingTime + private var remainingNoChattingTime = NO_CHATTING_TIME private val signatureImageUrlList = mutableListOf() private var signatureImageUrl = "" @@ -151,6 +154,23 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } } + private val heartNicknameList = mutableListOf() + private var heartNickname = "" + set(value) { + field = value + + if (field.isNotBlank()) { + showHeartMessage() + handler.postDelayed({ + if (heartNicknameList.isNotEmpty()) { + heartNickname = heartNicknameList.removeAt(0) + } else { + hideHeartMessage() + } + }, 1000) + } + } + private var isShowSignatureImage = false private var isAvailableLikeHeart = false private var originalButtonPosition: IntArray? = null @@ -162,7 +182,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB override fun onFinish() { isNoChatting = false - remainingNoChattingTime = noChattingTime + remainingNoChattingTime = NO_CHATTING_TIME removeNoChatRoom() Toast.makeText( applicationContext, @@ -1149,8 +1169,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB SharedPreferenceManager.userId.toInt() ) handler.post { - chatAdapter.items.add(LiveRoomHeartDonationChat(nickname)) - invalidateChat() + addHeartMessage(nickname) addHeartAnimation() lifecycleScope.launch { viewModel.addHeartDonation() } } @@ -1777,8 +1796,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB LiveRoomChatRawMessageType.HEART_DONATION -> { handler.post { - chatAdapter.items.add(LiveRoomHeartDonationChat(nickname)) - invalidateChat() + addHeartMessage(nickname) addHeartAnimation() lifecycleScope.launch { viewModel.addHeartDonation() } } @@ -2120,6 +2138,46 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } } + private fun addHeartMessage(nickname: String) { + if (heartNickname.isBlank()) { + heartNickname = nickname + } else { + heartNicknameList.add(nickname) + } + } + + private fun showHeartMessage() { + val str = "'${heartNickname}'님이 마음을 전했습니다 : \uD83D\uDC95" + val spStr = SpannableString(str) + + spStr.setSpan( + ForegroundColorSpan( + ContextCompat.getColor( + applicationContext, + R.color.color_f0c030 + ) + ), + str.indexOf("'") + 1, + str.indexOf("'님"), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + + spStr.setSpan( + StyleSpan(Typeface.BOLD), + str.indexOf("'"), + str.indexOf("'님"), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + binding.tvHeartMessage.text = spStr + binding.tvHeartMessage.visibility = View.VISIBLE + } + + private fun hideHeartMessage() { + heartNickname = "" + binding.tvHeartMessage.text = "" + binding.tvHeartMessage.visibility = View.GONE + } + private fun addSignatureImage(imageUrl: String) { if (imageUrl.isNotBlank()) { if (!isShowSignatureImage) { @@ -2228,6 +2286,6 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } companion object { - private const val noChattingTime = 180L + private const val NO_CHATTING_TIME = 180L } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt index 117b14a8..7b1307e5 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt @@ -403,39 +403,3 @@ data class LiveRoomRouletteDonationChat( itemBinding.root.setPadding(33) } } - -@Keep -data class LiveRoomHeartDonationChat( - val nickname: String -) : LiveRoomChat() { - override var type = LiveRoomChatType.JOIN - override fun bind(context: Context, binding: ViewBinding, onClickProfile: ((Long) -> Unit)?) { - (binding as ItemLiveRoomJoinChatBinding).tvJoin.setTextColor( - ContextCompat.getColor(context, R.color.color_111111) - ) - val str = "'$nickname'님이 마음을 전했습니다 : \uD83D\uDC95" - val spStr = SpannableString(str) - - spStr.setSpan( - ForegroundColorSpan( - ContextCompat.getColor( - context, - R.color.color_ec3aa6 - ) - ), - str.indexOf("'") + 1, - str.indexOf("'님"), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - - spStr.setSpan( - StyleSpan(Typeface.BOLD), - str.indexOf("'"), - str.indexOf("'님"), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE - ) - - (binding as ItemLiveRoomJoinChatBinding).tvJoin.text = spStr - binding.root.setBackgroundResource(R.drawable.bg_round_corner_4_7_ccffffff) - } -} diff --git a/app/src/main/res/drawable/bg_round_corner_4_7_ccffffff.xml b/app/src/main/res/drawable/bg_round_corner_4_7_ccffffff.xml deleted file mode 100644 index 83e8a96f..00000000 --- a/app/src/main/res/drawable/bg_round_corner_4_7_ccffffff.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/app/src/main/res/layout/activity_live_room.xml b/app/src/main/res/layout/activity_live_room.xml index 0f07c136..ea82b87a 100644 --- a/app/src/main/res/layout/activity_live_room.xml +++ b/app/src/main/res/layout/activity_live_room.xml @@ -56,6 +56,21 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/ll_top" /> + + #333BB9F1 #672BFF #CCFFFFFF + #CC777777 #EC3AA6 + #F0C030