Parcourir la source

房间UI问题

DoggyZhang il y a 1 an
Parent
commit
cb69ef3cfa
31 fichiers modifiés avec 331 ajouts et 183 suppressions
  1. 69 54
      app/src/main/java/com/adealink/weparty/module/profile/view/UserIdView.kt
  2. 4 4
      app/src/main/res/layout/gift_item_member_select.xml
  3. 31 23
      app/src/main/res/layout/layout_user_id_view.xml
  4. 5 1
      app/src/main/res/values/attrs.xml
  5. 1 1
      module/gift/src/main/res/layout/item_normal_gift.xml
  6. 3 1
      module/profile/src/main/java/com/adealink/weparty/profile/userprofile/NewUserProfileActivity.kt
  7. BIN
      module/room/src/main/assets/room_gift_btn.svga
  8. 9 14
      module/room/src/main/java/com/adealink/weparty/room/attr/adapter/RoomMicLayoutSelectViewBinder.kt
  9. 4 8
      module/room/src/main/java/com/adealink/weparty/room/attr/info/RoomInfoFragment.kt
  10. 80 0
      module/room/src/main/java/com/adealink/weparty/room/attr/widget/RoomFollowView.kt
  11. 18 13
      module/room/src/main/java/com/adealink/weparty/room/operate/RoomBottomOperateFragment.kt
  12. BIN
      module/room/src/main/res/drawable-xhdpi/room_follow_ic.webp
  13. BIN
      module/room/src/main/res/drawable-xhdpi/room_location_ic.png
  14. BIN
      module/room/src/main/res/drawable-xhdpi/room_member_copy_id_ic.png
  15. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_13_ic.webp
  16. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_16_ic.webp
  17. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_21_ic.webp
  18. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_9_ic.webp
  19. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_layout_13_mic_ic.png
  20. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_layout_16_mic_ic.png
  21. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_layout_21_mic_ic.png
  22. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_layout_9_mic_ic.png
  23. BIN
      module/room/src/main/res/drawable-xhdpi/room_mic_select_bg.png
  24. BIN
      module/room/src/main/res/drawable-xhdpi/room_setting_arrow_right_ic.png
  25. 4 3
      module/room/src/main/res/layout/dialog_on_mic_application.xml
  26. 22 3
      module/room/src/main/res/layout/fragment_room_bottom_operate.xml
  27. 1 1
      module/room/src/main/res/layout/fragment_room_info.xml
  28. 12 7
      module/room/src/main/res/layout/fragment_room_member_info.xml
  29. 36 32
      module/room/src/main/res/layout/fragment_room_setting.xml
  30. 18 18
      module/room/src/main/res/layout/item_mic_mode_select.xml
  31. 14 0
      module/room/src/main/res/layout/layout_room_follow_view.xml

+ 69 - 54
app/src/main/java/com/adealink/weparty/module/profile/view/UserIdView.kt

@@ -3,6 +3,7 @@ package com.adealink.weparty.module.profile.view
 import android.content.Context
 import android.graphics.Color
 import android.util.AttributeSet
+import android.util.TypedValue
 import android.view.LayoutInflater
 import android.view.View
 import android.widget.Toast
@@ -10,20 +11,15 @@ import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.view.updateLayoutParams
 import com.adealink.frame.aab.util.getCompatColor
 import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.util.DisplayUtil
 import com.adealink.frame.util.copyToClipBoard
 import com.adealink.frame.util.onClick
-import com.adealink.frame.util.setRightDrawable
 import com.adealink.weparty.R
 import com.adealink.weparty.commonui.ext.dp
 import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.hide
 import com.adealink.weparty.commonui.ext.show
+import com.adealink.weparty.commonui.ext.sp
 import com.adealink.weparty.commonui.toast.util.showToast
 import com.adealink.weparty.databinding.LayoutUserIdViewBinding
-import com.adealink.weparty.module.profile.data.GoodIdInfo
-import com.adealink.weparty.module.profile.data.StrGoodIdInfo
-import com.adealink.weparty.module.profile.data.UserConfigType
 import com.adealink.weparty.module.profile.data.UserInfo
 import com.adealink.weparty.module.profile.util.setCustomEffectId
 import com.adealink.weparty.module.profile.util.setSidEffectSvga
@@ -46,14 +42,25 @@ class UserIdView @JvmOverloads constructor(
     //展示copy按钮
     private var showCopyBtn = false
 
-    //展示背景
-    private var showBg = false
+    private var copyBtnResID = R.drawable.profile_sid_bg
+
+    private var copyBtnSize = 12
+
+    private var copyBtnMarginStart = 6
 
     //常规字体颜色
     private var normalTextColor = Color.parseColor("#FFFFFF")
 
+    //字体大小
+    private var idTextSize = 10f
+
+    private var idShowTextBg = false
+
+    private var userInfo: UserInfo? = null
+
     init {
         initAttrs(context, attrs)
+        layoutDirection = View.LAYOUT_DIRECTION_LTR
     }
 
     private fun initAttrs(context: Context, attrs: AttributeSet?) {
@@ -63,15 +70,32 @@ class UserIdView @JvmOverloads constructor(
         attrs?.let {
             val ta = context.obtainStyledAttributes(it, R.styleable.UserIdView)
             showCopyBtn = ta.getBoolean(R.styleable.UserIdView_show_copy_btn, false)
-            showBg = ta.getBoolean(R.styleable.UserIdView_show_bg, false)
+            copyBtnResID = ta.getResourceId(R.styleable.UserIdView_copy_btn_res_id, R.drawable.profile_copy_ic)
+            copyBtnSize = ta.getDimensionPixelSize(R.styleable.UserIdView_copy_btn_size, 16.dp())
+            copyBtnMarginStart = ta.getDimensionPixelSize(R.styleable.UserIdView_copy_btn_size, 4.dp())
+
+            idShowTextBg = ta.getBoolean(R.styleable.UserIdView_show_id_text_bg, false)
             normalTextColor = ta.getColor(
                 R.styleable.UserIdView_id_text_color,
                 getCompatColor(R.color.white)
             )
+            idTextSize = ta.getDimensionPixelSize(R.styleable.UserIdView_id_text_size, 12.sp()).toFloat()
             ta.recycle()
         }
         binding.ivCopy.show(showCopyBtn)
+        binding.ivCopy.updateLayoutParams<LayoutParams> {
+            width = copyBtnSize
+            height = copyBtnSize
+            marginStart = copyBtnMarginStart
+        }
         binding.tvId.setTextColor(normalTextColor)
+        binding.tvId.setTextSize(TypedValue.COMPLEX_UNIT_PX, idTextSize)
+        binding.root.onClick {
+            if (!showCopyBtn) {
+                return@onClick
+            }
+            clickCopyId()
+        }
     }
 
     /**
@@ -79,32 +103,35 @@ class UserIdView @JvmOverloads constructor(
      * < 40   “ID:XXX”
      * >=40  “XXX”
      */
-    fun setUserInfo(userInfo: UserInfo, copyClickStat: (() -> Unit)? = null) {
+    fun setUserInfo(userInfo: UserInfo) {
+        this.userInfo = userInfo
         val strGoodIdInfo = userInfo.strGoodIdInfo
         val goodIdInfo = userInfo.goodIdInfo
-        val tvId = binding.tvId
         if (strGoodIdInfo != null && strGoodIdInfo.strGoodId.isNotEmpty()) {
-            tvId.hide()
+            //靓号
+            binding.ivGoodId.gone()
+            binding.tvId.gone()
             binding.svgaEffectId.show()
             setSidEffectSvga(
                 binding.svgaEffectId,
                 strGoodIdInfo.strGoodId,
             )
+            return
+        }
 
-        } else if (goodIdInfo != null && goodIdInfo.goodId != 0) {
-            tvId.text = goodIdInfo.goodId.toString()
+        if (goodIdInfo != null && goodIdInfo.goodId != 0) {
             if (userInfo.level < DYNAMIC_CUSTOM_ID_BG_LEVEL) {
-                tvId.show()
                 binding.svgaEffectId.gone()
                 binding.ivGoodId.show()
-                tvId.setTextColor(getCompatColor(R.color.color_FFFF4B00))
-                tvId.setBackgroundResource(R.drawable.label_good_id_bg)
-                setCopyButton(userInfo, copyClickStat)
-                tvId.setPaddingRelative(
-                    DisplayUtil.dp2px(24f), tvId.paddingTop, tvId.paddingEnd, tvId.paddingBottom
-                )
+                binding.tvId.show()
+                binding.tvId.text = goodIdInfo.goodId.toString()
+                binding.tvId.setTextColor(getCompatColor(R.color.color_FFFF4B00))
+                binding.tvId.setBackgroundResource(R.drawable.label_good_id_bg)
+                binding.tvId.setPaddingRelative(24.dp(), 0, 6.dp(), 0)
+                setCopyButton(userInfo)
             } else {
-                tvId.hide()
+                binding.ivGoodId.gone()
+                binding.tvId.gone()
                 binding.svgaEffectId.show()
                 binding.svgaEffectId.updateLayoutParams { width = 76.dp() }
                 setCustomEffectId(
@@ -115,55 +142,43 @@ class UserIdView @JvmOverloads constructor(
                     R.color.color_7D000000,
                 )
             }
-        } else {
-            tvId.show()
-            binding.svgaEffectId.gone()
-            binding.ivGoodId.visibility = View.GONE
-            tvId.setTextColor(normalTextColor)
-            tvId.setBackgroundResource(R.drawable.profile_sid_bg)
-            setCopyButton(userInfo)
-            if (showBg) {
-                tvId.setPaddingRelative(
-                    6.dp(), tvId.paddingTop, tvId.paddingEnd, tvId.paddingBottom
-                )
-            } else {
-                tvId.setPaddingRelative(
-                    0, tvId.paddingTop, tvId.paddingEnd, tvId.paddingBottom
-                )
-            }
-
-            tvId.text = getCompatString(R.string.profile_short_id, userInfo.uid.toString())
+            return
         }
 
-        binding.root.onClick {
-            if (!showCopyBtn) {
-                return@onClick
-            }
-            clickCopyId(userInfo, copyClickStat)
+        //普通用户ID样式
+        binding.svgaEffectId.gone()
+        binding.ivGoodId.gone()
+        binding.tvId.show()
+        binding.tvId.text = getCompatString(R.string.profile_short_id, userInfo.uid.toString())
+        binding.tvId.setTextColor(normalTextColor)
+        setCopyButton(userInfo)
+        if (idShowTextBg) {
+            binding.tvId.setPaddingRelative(6.dp(), 0, 6.dp(), 0)
+            binding.tvId.setBackgroundResource(R.drawable.profile_sid_bg)
+        } else {
+            binding.tvId.setPaddingRelative(0, 0, 0, 0)
+            binding.tvId.setBackgroundResource(0)
         }
     }
 
-    private fun setCopyButton(userInfo: UserInfo, copyClickStat: (() -> Unit)? = null) {
+    private fun setCopyButton(userInfo: UserInfo) {
         if (showCopyBtn) {
             val drawableId =
                 if (userInfo.goodIdInfo != null) {
                     if (userInfo.level < DYNAMIC_CUSTOM_ID_BG_LEVEL) {
                         R.drawable.profile_good_id_copy_ic
                     } else {
-                        null
+                        copyBtnResID
                     }
                 } else {
-                    R.drawable.profile_copy_ic
+                    copyBtnResID
                 }
-            drawableId?.let { drawable ->
-                setRightDrawable(binding.tvId, drawable)
-            }
+            binding.ivCopy.setImageResource(drawableId)
         }
     }
 
-    private fun clickCopyId(userInfo: UserInfo, copyClickStat: (() -> Unit)? = null) {
-        copyClickStat?.invoke()
-
+    private fun clickCopyId() {
+        val userInfo = userInfo ?: return
         if (!userInfo.hasGoodId() && !userInfo.hasStrGoodInfo()) {
             if (copyToClipBoard(userInfo.uid.toString(), userInfo.uid.toString())) {
                 showToast(R.string.profile_id_copied, Toast.LENGTH_SHORT)

+ 4 - 4
app/src/main/res/layout/gift_item_member_select.xml

@@ -32,8 +32,8 @@
         android:layout_width="12dp"
         android:layout_height="12dp"
         android:visibility="gone"
-        app:layout_constraintBottom_toBottomOf="@id/avatar"
-        app:layout_constraintEnd_toEndOf="@id/avatar"
+        app:layout_constraintBottom_toBottomOf="@id/v_selected"
+        app:layout_constraintEnd_toEndOf="@id/v_selected"
         app:srcCompat="@drawable/gift_item_member_owner_tag_ic"
         tools:visibility="visible" />
 
@@ -49,8 +49,8 @@
         android:textColor="@color/white"
         android:textSize="9sp"
         android:visibility="gone"
-        app:layout_constraintBottom_toBottomOf="@id/avatar"
-        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toBottomOf="@id/v_selected"
+        app:layout_constraintEnd_toEndOf="@id/v_selected"
         tools:ignore="SmallSp"
         tools:text="1"
         tools:visibility="visible" />

+ 31 - 23
app/src/main/res/layout/layout_user_id_view.xml

@@ -3,58 +3,66 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="wrap_content"
-    android:layout_height="20dp"
-    android:layoutDirection="ltr"
-    tools:background="@color/color_AAAAAA">
+    android:layout_height="wrap_content"
+    tools:background="@color/color_AAAAAA"
+    tools:layoutDirection="ltr">
 
     <com.opensource.svgaplayer.WenextSvgaView
         android:id="@+id/svga_effect_id"
         android:layout_width="76dp"
         android:layout_height="20dp"
+        android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="@id/tvId"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="@id/tvId" />
+        app:layout_constraintTop_toTopOf="@id/tvId"
+        tools:visibility="visible" />
 
     <androidx.appcompat.widget.AppCompatImageView
-        android:id="@+id/iv_copy"
-        android:layout_width="10dp"
-        android:layout_height="10dp"
-        android:layout_marginEnd="2dp"
-        android:src="@drawable/profile_good_id_copy_ic"
+        android:id="@+id/iv_good_id"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:src="@drawable/common_customized_id_ic"
         android:visibility="gone"
-        app:layout_constraintBottom_toBottomOf="@id/svga_effect_id"
-        app:layout_constraintEnd_toEndOf="@id/svga_effect_id"
-        app:layout_constraintTop_toTopOf="@id/svga_effect_id"
+        app:layout_constraintBottom_toBottomOf="@id/tvId"
+        app:layout_constraintStart_toStartOf="@id/tvId"
+        app:layout_constraintTop_toTopOf="@id/tvId"
         tools:visibility="visible" />
 
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tvId"
         android:layout_width="wrap_content"
         android:layout_height="18dp"
-        android:background="@drawable/profile_sid_bg"
-        android:drawablePadding="6dp"
         android:gravity="center"
         android:includeFontPadding="false"
         android:paddingStart="24dp"
-        android:paddingEnd="6dp"
         android:textColor="@color/white"
         android:textSize="11sp"
         android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        tools:drawableEnd="@drawable/profile_copy_ic"
+        tools:background="@drawable/profile_sid_bg"
+        tools:paddingEnd="6dp"
         tools:text="ID:123456"
         tools:visibility="visible" />
 
+    <androidx.constraintlayout.widget.Barrier
+        android:id="@+id/barrier_end"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:barrierDirection="end"
+        app:constraint_referenced_ids="svga_effect_id,tvId,iv_good_id" />
+
     <androidx.appcompat.widget.AppCompatImageView
-        android:id="@+id/iv_good_id"
-        android:layout_width="20dp"
-        android:layout_height="20dp"
-        android:src="@drawable/common_customized_id_ic"
+        android:id="@+id/iv_copy"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
+        android:layout_marginStart="4dp"
+        android:src="@drawable/profile_copy_ic"
         android:visibility="gone"
-        app:layout_constraintBottom_toBottomOf="@id/tvId"
-        app:layout_constraintStart_toStartOf="@id/tvId"
-        app:layout_constraintTop_toTopOf="@id/tvId"
+        app:layout_constraintBottom_toBottomOf="@id/svga_effect_id"
+        app:layout_constraintStart_toEndOf="@id/barrier_end"
+        app:layout_constraintTop_toTopOf="@id/svga_effect_id"
         tools:visibility="visible" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 5 - 1
app/src/main/res/values/attrs.xml

@@ -632,8 +632,12 @@
     </declare-styleable>
 
     <declare-styleable name="UserIdView">
-        <attr name="show_bg" format="boolean" />
         <attr name="show_copy_btn" format="boolean" />
+        <attr name="copy_btn_res_id" format="reference" />
+        <attr name="copy_btn_size" format="dimension" />
+        <attr name="copy_btn_margin_start" format="dimension" />
+
+        <attr name="show_id_text_bg" format="boolean" />
         <attr name="id_text_color" format="color" />
         <attr name="id_text_size" format="dimension" />
     </declare-styleable>

+ 1 - 1
module/gift/src/main/res/layout/item_normal_gift.xml

@@ -57,7 +57,7 @@
             android:includeFontPadding="false"
             android:singleLine="true"
             android:textColor="@color/white"
-            android:textSize="12sp"
+            android:textSize="10sp"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/icon" />

+ 3 - 1
module/profile/src/main/java/com/adealink/weparty/profile/userprofile/NewUserProfileActivity.kt

@@ -72,7 +72,6 @@ class NewUserProfileActivity : BaseActivity() {
 
     override fun initViews() {
         setContentView(binding.root)
-
         //viewpager
         profilePageAdapter = ProfilePageAdapter()
         binding.profileVp.adapter = profilePageAdapter
@@ -82,6 +81,9 @@ class NewUserProfileActivity : BaseActivity() {
             TAB_INDEX_PERSONAL
         )
         switchTab(tabIndex)
+
+
+        throw IllegalArgumentException("测试xlog, 怎么没有崩溃日志呢?")
     }
 
     override fun initComponents() {

BIN
module/room/src/main/assets/room_gift_btn.svga


+ 9 - 14
module/room/src/main/java/com/adealink/weparty/room/attr/adapter/RoomMicLayoutSelectViewBinder.kt

@@ -35,22 +35,18 @@ class RoomMicLayoutSelectViewBinder(private val listener: IRoomMicLayoutSelectLi
 
         fun update(item: RoomMicLayoutItemData) {
             when (item.layout) {
-                RoomMicMode.ROOM_MIC_12_LAYOUT -> {
-                    binding.ivBg.setActualImageResource(R.drawable.room_mic_select_bg)
-                    binding.ivMicPeople.setImageResource(R.drawable.room_mic_13_ic)
-                    binding.ivMicPeople.show()
-                    binding.tvPeople.text = getCompatString(R.string.room_13_people)
-                }
                 RoomMicMode.ROOM_MIC_8_LAYOUT -> {
-                    binding.ivBg.setActualImageResource(R.drawable.room_mic_select_bg)
-                    binding.ivMicPeople.setImageResource(R.drawable.room_mic_9_ic)
-                    binding.ivMicPeople.show()
+                    binding.ivBg.setImageResource(R.drawable.room_mic_layout_9_mic_ic)
                     binding.tvPeople.text = getCompatString(R.string.room_9_people)
                 }
+
+                RoomMicMode.ROOM_MIC_12_LAYOUT -> {
+                    binding.ivBg.setImageResource(R.drawable.room_mic_layout_13_mic_ic)
+                    binding.tvPeople.text = getCompatString(R.string.room_13_people)
+                }
+
                 RoomMicMode.ROOM_MIC_15_LAYOUT -> {
-                    binding.ivBg.setActualImageResource(R.drawable.room_mic_select_bg)
-                    binding.ivMicPeople.setImageResource(R.drawable.room_mic_16_ic)
-                    binding.ivMicPeople.show()
+                    binding.ivBg.setImageResource(R.drawable.room_mic_layout_16_mic_ic)
                     binding.tvPeople.text = getCompatString(R.string.room_16_people)
                 }
 //                RoomMicMode.ROOM_MIC_WEDDING_ROOM -> {
@@ -59,8 +55,7 @@ class RoomMicLayoutSelectViewBinder(private val listener: IRoomMicLayoutSelectLi
 //                    binding.tvPeople.text = getCompatString(R.string.room_wedding_mic_room)
 //                }
                 RoomMicMode.ROOM_MIC_20_LAYOUT -> {
-                    binding.ivBg.setActualImageResource(R.drawable.room_mic_select_bg)
-                    binding.ivMicPeople.setImageResource(R.drawable.room_mic_21_ic)
+                    binding.ivBg.setImageResource(R.drawable.room_mic_layout_21_mic_ic)
                     binding.tvPeople.text = getCompatString(R.string.room_multi_people, ROOM_MIC_MODE_SEAT_20)
                 }
                 else -> {}

+ 4 - 8
module/room/src/main/java/com/adealink/weparty/room/attr/info/RoomInfoFragment.kt

@@ -7,6 +7,7 @@ import androidx.fragment.app.viewModels
 import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.base.Rlt
 import com.adealink.frame.base.fastLazy
+import com.adealink.frame.ext.isViewBindingValid
 import com.adealink.frame.log.Log
 import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.frame.room.data.TAG_ROOM
@@ -46,10 +47,9 @@ class RoomInfoFragment : BaseFragment(R.layout.fragment_room_info) {
     private val followViewModel by fastLazy { FollowModule.getFollowViewModel(this.requireActivity()) }
     private val memberViewModel by viewModels<RoomMemberViewModel> { RoomViewModelFactory() }
     private val roomSeatViewModel by activityViewModels<RoomSeatViewModel> { RoomViewModelFactory() }
-    private val familyInfoViewModel by fastLazy { FamilyModule.getFamilyInfoViewModel(this.requireActivity()) }
     private val videoRoomViewModel by fastLazy { YoutubeModule.getYoutubeConfigViewModel(this.requireActivity()) }
     private val adminPermissionViewModel by lazy { RoomModule.getAdminPermissionViewModel(this.requireActivity()) }
-    private var followed = false
+    private var followed: Boolean? = null
 
     override fun initViews() {
         binding.root.setOnClickListener {
@@ -58,6 +58,7 @@ class RoomInfoFragment : BaseFragment(R.layout.fragment_room_info) {
         }
         binding.followBtn.setOnClickListener {
             memberViewModel.getJoinedRoomOwnerUid()?.let { uid ->
+                val followed = followed ?: return@let
                 if (followed) {
                     unfollowUser(uid)
                     reportBtnClick(RoomBaseStatEvent.Btn.FOLLOWING, RoomBaseStatEvent.Result.CLOSE)
@@ -182,13 +183,8 @@ class RoomInfoFragment : BaseFragment(R.layout.fragment_room_info) {
     }
 
     private fun updateFollowed(followed: Boolean) {
+        binding.followBtn.setFollow(followed, this.followed != null)
         this.followed = followed
-        if (followed) {
-            binding.followBtn.visibility = View.GONE
-        } else {
-            binding.followBtn.visibility = View.VISIBLE
-        }
-        binding.followBtn.setImageResource(if (followed) R.drawable.room_unfollow_ic else R.drawable.room_unfollow_ic)
     }
 
     override fun loadData() {

+ 80 - 0
module/room/src/main/java/com/adealink/weparty/room/attr/widget/RoomFollowView.kt

@@ -0,0 +1,80 @@
+package com.adealink.weparty.room.attr.widget
+
+import android.animation.Animator
+import android.animation.ObjectAnimator
+import android.animation.PropertyValuesHolder
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import androidx.constraintlayout.widget.ConstraintLayout
+import com.adealink.weparty.commonui.ext.gone
+import com.adealink.weparty.commonui.ext.show
+import com.adealink.weparty.room.R
+import com.adealink.weparty.room.databinding.LayoutRoomFollowViewBinding
+
+class RoomFollowView @JvmOverloads constructor(
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0,
+) : ConstraintLayout(context, attrs, defStyleAttr) {
+
+    private val binding = LayoutRoomFollowViewBinding.inflate(LayoutInflater.from(context), this)
+
+    private var followed = false
+
+    private var animator: Animator? = null
+
+    init {
+        setFollow(followed, false)
+    }
+
+    fun setFollow(followed: Boolean, anim: Boolean) {
+        this.followed = followed
+        binding.ivFollow.scaleX = 1f
+        binding.ivFollow.scaleY = 1f
+        binding.ivFollow.alpha = 1f
+        binding.ivFollow.setImageResource(if (followed) R.drawable.room_follow_ic else R.drawable.room_unfollow_ic)
+        if (!followed) {
+            binding.root.show()
+            return
+        }
+        if (anim) {
+            playUnFollowAnim {
+                if (isAttachedToWindow) {
+                    binding.root.gone()
+                }
+            }
+        } else {
+            binding.root.gone()
+        }
+    }
+
+    private fun playUnFollowAnim(onAnimationEnd: (() -> Unit)?) {
+        animator?.cancel()
+        val anim1 = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f, 0f)
+        val anim2 = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f, 0f)
+        val anim3 = PropertyValuesHolder.ofFloat(View.ALPHA, 1f, 0f)
+        animator = ObjectAnimator.ofPropertyValuesHolder(
+            binding.ivFollow, anim1, anim2, anim3
+        ).also {
+            it.startDelay = 300L
+            it.duration = 300L
+            it.addListener(object : Animator.AnimatorListener {
+                override fun onAnimationStart(animation: Animator) {
+                }
+
+                override fun onAnimationEnd(animation: Animator) {
+                    onAnimationEnd?.invoke()
+                }
+
+                override fun onAnimationCancel(animation: Animator) {
+                }
+
+                override fun onAnimationRepeat(animation: Animator) {
+                }
+
+            })
+            it.start()
+        }
+    }
+
+}

+ 18 - 13
module/room/src/main/java/com/adealink/weparty/room/operate/RoomBottomOperateFragment.kt

@@ -121,12 +121,12 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
             R.drawable.room_operate_emoji_ic
         )
     }
-    private val giftOperateItem by fastLazy {
-        OperateBox.Item(
-            OPERATE_BTN_GIFT,
-            R.drawable.room_operate_gift_ic
-        )
-    }
+//    private val giftOperateItem by fastLazy {
+//        OperateBox.Item(
+//            OPERATE_BTN_GIFT,
+//            R.drawable.room_operate_gift_ic
+//        )
+//    }
 
     private val micAndMsgOperateItem by fastLazy {
         OperateBox.Item(
@@ -171,6 +171,9 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
 //        binding.ivEmoji.setOnClickListener {
 //            onEmojiIconClick()
 //        }
+        binding.giftBtn.setOnClickListener {
+            onGiftIconClick()
+        }
         updateOperateBoxBy(roomService.attrController.getRoomType())
         binding.operateBox.itemClickListener = this
         applyOnMicGuide.register(this)
@@ -347,7 +350,7 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
                     .addItem(micAndMsgOperateItem)
                     .addItem(playCenterOperateItem)
 //                    .addItem(roomGameOperateItem)
-                    .addItem(giftOperateItem)
+                    //.addItem(giftOperateItem)
             }
 
             RoomType.MIC_GRAB -> {
@@ -355,7 +358,7 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
                     .removeAllItems()
                     .addItem(speakerOperateItem)
                     .addItem(micAndMsgOperateItem)
-                    .addItem(giftOperateItem)
+                    //.addItem(giftOperateItem)
             }
         }
     }
@@ -405,7 +408,7 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
 
     private fun showPlayCenterIcon(show: Boolean) {
         if (show) {
-            binding.operateBox.addBefore(playCenterOperateItem, giftOperateItem)
+            binding.operateBox.addItem(playCenterOperateItem)
         } else {
             binding.operateBox.removeItem(playCenterOperateItem)
         }
@@ -457,9 +460,9 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
                 onEmojiIconClick()
             }
 
-            giftOperateItem -> {
-                onGiftIconClick()
-            }
+//            giftOperateItem -> {
+//                onGiftIconClick()
+//            }
 
             micAndMsgOperateItem -> {
                 onMicAndMsgIconClick()
@@ -568,7 +571,9 @@ open class RoomBottomOperateFragment : BaseFragment(R.layout.fragment_room_botto
         if (!isViewBindingValid()) {
             return null
         }
-
+        if (itemId == OPERATE_BTN_GIFT) {
+            return binding.giftBtn
+        }
         return binding.operateBox.findItemById(itemId)
     }
 

BIN
module/room/src/main/res/drawable-xhdpi/room_follow_ic.webp


BIN
module/room/src/main/res/drawable-xhdpi/room_location_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_member_copy_id_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_13_ic.webp


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_16_ic.webp


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_21_ic.webp


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_9_ic.webp


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_layout_13_mic_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_layout_16_mic_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_layout_21_mic_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_layout_9_mic_ic.png


BIN
module/room/src/main/res/drawable-xhdpi/room_mic_select_bg.png


BIN
module/room/src/main/res/drawable-xhdpi/room_setting_arrow_right_ic.png


+ 4 - 3
module/room/src/main/res/layout/dialog_on_mic_application.xml

@@ -50,7 +50,7 @@
     <com.adealink.weparty.commonui.widget.CommonButton
         android:id="@+id/apply_btn"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
+        android:layout_height="44dp"
         android:layout_marginHorizontal="40dp"
         android:gravity="center"
         android:paddingVertical="8dp"
@@ -60,10 +60,10 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent" />
 
-    <androidx.appcompat.widget.AppCompatTextView
+    <com.adealink.weparty.commonui.widget.CommonButton
         android:id="@+id/cancel_btn"
         android:layout_width="0dp"
-        android:layout_height="wrap_content"
+        android:layout_height="44dp"
         android:layout_marginHorizontal="40dp"
         android:gravity="center"
         android:paddingVertical="8dp"
@@ -71,6 +71,7 @@
         android:textColor="@color/color_app_main"
         android:textSize="16sp"
         android:visibility="gone"
+        app:is_strong="false"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent" />

+ 22 - 3
module/room/src/main/res/layout/fragment_room_bottom_operate.xml

@@ -11,7 +11,7 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_input"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
+        android:layout_height="32dp"
         android:background="@drawable/room_bottom_input_bg"
         android:paddingHorizontal="16dp"
         android:paddingVertical="8dp"
@@ -59,13 +59,32 @@
         android:id="@+id/operate_box"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginEnd="8dp"
         android:clipChildren="false"
         app:icon_size="32dp"
         app:item_height="40dp"
         app:item_width="40dp"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/cl_gift_btn"
         app:layout_constraintTop_toTopOf="parent" />
 
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cl_gift_btn"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <com.opensource.svgaplayer.WenextSvgaView
+            android:id="@+id/gift_btn"
+            android:layout_width="32dp"
+            android:layout_height="32dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:source="room_gift_btn.svga" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 1
module/room/src/main/res/layout/fragment_room_info.xml

@@ -128,7 +128,7 @@
             app:layout_constraintEnd_toStartOf="@id/follow_btn"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <androidx.appcompat.widget.AppCompatImageView
+        <com.adealink.weparty.room.attr.widget.RoomFollowView
             android:id="@+id/follow_btn"
             android:layout_width="28dp"
             android:layout_height="28dp"

+ 12 - 7
module/room/src/main/res/layout/fragment_room_member_info.xml

@@ -59,7 +59,7 @@
                 android:ellipsize="end"
                 android:gravity="center"
                 android:includeFontPadding="false"
-                android:maxLines="3"
+                android:singleLine="true"
                 android:textColor="@color/color_333333"
                 android:textSize="16sp"
                 app:layout_constrainedWidth="true"
@@ -67,6 +67,7 @@
                 app:layout_constraintHorizontal_chainStyle="packed"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintWidth_max="160dp"
                 tools:text="MarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkMarkM" />
 
             <com.adealink.weparty.module.profile.view.OfficialLabelView
@@ -117,8 +118,8 @@
 
             <androidx.appcompat.widget.AppCompatImageView
                 android:id="@+id/iv_room_admin"
-                android:layout_width="22dp"
-                android:layout_height="22dp"
+                android:layout_width="12dp"
+                android:layout_height="12dp"
                 android:src="@drawable/room_admin_label_ic"
                 android:visibility="gone"
                 app:layout_constraintBottom_toBottomOf="@id/user_id_view"
@@ -133,7 +134,11 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="4dp"
+                app:copy_btn_margin_start="2dp"
+                app:copy_btn_res_id="@drawable/room_member_copy_id_ic"
+                app:copy_btn_size="16dp"
                 app:id_text_color="@color/color_AAAAAA"
+                app:id_text_size="12sp"
                 app:layout_constraintEnd_toStartOf="@id/v_line_1"
                 app:layout_constraintStart_toEndOf="@id/iv_room_admin"
                 app:layout_constraintTop_toTopOf="parent"
@@ -186,7 +191,7 @@
                 android:textColor="@color/color_AAAAAA"
                 android:textSize="12sp"
                 android:visibility="gone"
-                app:drawableStartCompat="@drawable/common_location_ic"
+                app:drawableStartCompat="@drawable/room_location_ic"
                 app:layout_constraintBottom_toBottomOf="@id/user_id_view"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintHorizontal_chainStyle="packed"
@@ -311,7 +316,7 @@
             android:layout_height="wrap_content"
             android:layout_marginTop="15dp"
             android:orientation="vertical"
-            android:paddingBottom="20dp"
+            android:paddingBottom="8dp"
             app:divider="@drawable/room_member_dialog_bottom_linearlayout_divider"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -432,7 +437,7 @@
 
                 <View
                     android:layout_width="match_parent"
-                    android:layout_height="1dp"
+                    android:layout_height="0.5dp"
                     android:background="@color/color_FFE1E3E6"
                     app:layout_constraintTop_toTopOf="parent" />
 
@@ -460,7 +465,7 @@
 
                 <View
                     android:layout_width="match_parent"
-                    android:layout_height="1dp"
+                    android:layout_height="0.5dp"
                     android:background="@color/color_FFE1E3E6"
                     app:layout_constraintTop_toTopOf="parent" />
 

+ 36 - 32
module/room/src/main/res/layout/fragment_room_setting.xml

@@ -92,7 +92,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:includeFontPadding="false"
                     android:text="@string/room_chat_setting"
@@ -101,11 +101,11 @@
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/chat_switch_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -120,14 +120,15 @@
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/chat_switch_layout">
+                app:layout_constraintTop_toBottomOf="@+id/chat_switch_layout"
+                tools:visibility="visible">
 
                 <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/sensitive_word_title"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:text="@string/room_sensitive_word_setting"
                     android:textColor="@color/color_222222"
@@ -137,16 +138,16 @@
                     android:id="@+id/sensitive_word_dot"
                     style="@style/CommonRedDot"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginStart="8dp"
+                    android:layout_marginEnd="8dp"
                     android:visibility="gone" />
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/sensitive_word_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -162,7 +163,8 @@
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/sensitive_word_layout">
+                app:layout_constraintTop_toBottomOf="@+id/sensitive_word_layout"
+                tools:visibility="visible">
 
                 <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/mic_mode_title"
@@ -179,6 +181,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:gravity="end"
                     android:textColor="@color/color_AAAAAA"
@@ -188,16 +191,16 @@
                     android:id="@+id/mic_mode_dot"
                     style="@style/CommonRedDot"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginStart="8dp"
+                    android:layout_marginEnd="8dp"
                     android:visibility="gone" />
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/mic_mode_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -217,7 +220,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:includeFontPadding="false"
                     android:text="@string/room_microphone_mode"
                     android:textColor="@color/color_222222"
@@ -228,6 +231,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:gravity="end"
                     android:includeFontPadding="false"
@@ -236,11 +240,11 @@
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/on_mic_mode_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -261,7 +265,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:includeFontPadding="false"
                     android:text="@string/room_wheat_mode"
@@ -278,11 +282,11 @@
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/mic_layout_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -303,7 +307,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:text="@string/room_super_mic"
                     android:textColor="@color/color_222222"
@@ -311,11 +315,11 @@
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/super_mic_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -336,7 +340,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginEnd="20dp"
+                    android:layout_marginEnd="12dp"
                     android:layout_weight="1"
                     android:includeFontPadding="false"
                     android:text="@string/room_effect_switch"
@@ -345,11 +349,11 @@
 
                 <androidx.appcompat.widget.AppCompatImageView
                     android:id="@+id/effect_switch_right_arrow"
-                    android:layout_width="28dp"
-                    android:layout_height="28dp"
+                    android:layout_width="12dp"
+                    android:layout_height="12dp"
                     android:layout_gravity="center_vertical"
                     android:rotationY="@integer/locale_mirror_flip"
-                    android:src="@drawable/common_arrow_right_grey_56_ic" />
+                    android:src="@drawable/room_setting_arrow_right_ic" />
 
             </androidx.appcompat.widget.LinearLayoutCompat>
 
@@ -360,7 +364,7 @@
     <View
         android:id="@+id/line"
         android:layout_width="match_parent"
-        android:layout_height="1dp"
+        android:layout_height="0.5dp"
         android:layout_marginHorizontal="16dp"
         android:background="@color/color_border"
         app:layout_constraintTop_toTopOf="@id/hs_bottom" />

+ 18 - 18
module/room/src/main/res/layout/item_mic_mode_select.xml

@@ -1,33 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="180dp"
+<com.adealink.weparty.commonui.widget.constrainlayout.RoundCornerConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:paddingVertical="4dp">
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingVertical="4dp"
+    app:constraint_layout_round_corner="12dp">
 
-    <com.adealink.frame.image.view.NetworkImageView
+    <androidx.appcompat.widget.AppCompatImageView
         android:id="@+id/iv_bg"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
         android:scaleType="fitXY"
-        app:roundedCornerRadius="13dp" />
+        app:layout_constraintDimensionRatio="686:400"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:roundedCornerRadius="13dp"
+        tools:srcCompat="@drawable/room_mic_layout_21_mic_ic" />
 
     <androidx.appcompat.widget.AppCompatTextView
         android:id="@+id/tv_people"
-        app:layout_constraintTop_toTopOf="parent"
         android:layout_width="match_parent"
         android:layout_height="36dp"
-        android:textSize="12sp"
+        android:gravity="start|center_vertical"
         android:paddingHorizontal="8dp"
         android:textColor="@color/white"
-        android:gravity="start|center_vertical" />
-
-    <androidx.appcompat.widget.AppCompatImageView
-        android:id="@+id/iv_mic_people"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        tools:src="@drawable/room_mic_9_ic" />
+        android:textSize="12sp"
+        app:layout_constraintTop_toTopOf="parent" />
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_use_status"
@@ -49,4 +49,4 @@
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+</com.adealink.weparty.commonui.widget.constrainlayout.RoundCornerConstraintLayout>

+ 14 - 0
module/room/src/main/res/layout/layout_room_follow_view.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="100dp"
+    android:layout_height="100dp">
+
+    <androidx.appcompat.widget.AppCompatImageView
+        android:id="@+id/iv_follow"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="fitCenter" />
+
+</merge>