主播评级弹窗改造

This commit is contained in:
huangjian
2023-02-14 18:56:19 +08:00
parent 62d57f5b5e
commit a00ff162f1
10 changed files with 460 additions and 107 deletions

View File

@@ -3,11 +3,16 @@ package com.mango.moshen.home.dialog
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.text.Spannable import android.text.Spannable
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.graphics.toColorInt import androidx.core.graphics.toColorInt
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import com.mango.core.statistic.StatisticManager import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol import com.mango.core.statistic.protocol.StatisticsProtocol
import com.mango.core.user.bean.AnchorGradeInfo
import com.mango.moshen.R import com.mango.moshen.R
import com.mango.moshen.base.BaseDialog import com.mango.moshen.base.BaseDialog
import com.mango.moshen.databinding.DialogAnchorGradeBinding import com.mango.moshen.databinding.DialogAnchorGradeBinding
@@ -49,8 +54,6 @@ class AnchorGradeDialog : BaseDialog<DialogAnchorGradeBinding>() {
private val meViewModel: MeViewModel by viewModels() private val meViewModel: MeViewModel by viewModels()
private val levelArray = arrayOf("D", "C", "B", "A", "S")
private var disposable: Disposable? = null private var disposable: Disposable? = null
@SuppressLint("CheckResult", "SetTextI18n") @SuppressLint("CheckResult", "SetTextI18n")
@@ -58,41 +61,15 @@ class AnchorGradeDialog : BaseDialog<DialogAnchorGradeBinding>() {
meViewModel.getAnchorGradeInfo(true) meViewModel.getAnchorGradeInfo(true)
meViewModel.anchorGradeInfoLiveData.observe(this) { meViewModel.anchorGradeInfoLiveData.observe(this) {
if (it == null) return@observe if (it == null) return@observe
val isCompleted =
it.currentReply >= it.targetReply && it.currentDiamond >= it.targetDiamond
binding.ivTitle.setImageResource(if (isCompleted) R.drawable.anchor_grade_bg_complete_text else R.drawable.anchor_grade_bg_task_text)
anchorDrawableResIds[it.grade.uppercase(Locale.getDefault())]?.let { resId -> anchorDrawableResIds[it.grade.uppercase(Locale.getDefault())]?.let { resId ->
binding.ivCurrLevel.setImageResource(resId) binding.ivCurrLevel.setImageResource(resId)
} }
val nextLevel = levelArray.getOrNull(levelArray.indexOf(it.grade) + 1) val constraintSet = ConstraintSet()
binding.tvDiamondCurrLevel.text = it.grade constraintSet.clone(binding.clRoot)
binding.tvDiamondNextLevel.text = nextLevel setupDiamond(it, constraintSet)
binding.tvReplayCurrLevel.text = it.grade setupReply(it, constraintSet)
binding.tvReplayNextLevel.text = nextLevel constraintSet.applyTo(binding.clRoot)
binding.tvDiamondTargetNum.text = it.currentDiamond.toString()
binding.pbDiamond.max = it.targetDiamond
binding.pbDiamond.progress = it.currentDiamond
binding.tvDiamondGap.text =
(it.targetDiamond - it.currentDiamond).let { diamondGap ->
if (diamondGap > 0) {
"还差${diamondGap}钻可完成"
} else {
"已完成"
}
}
binding.tvReplayTargetNum.text = "${(it.currentReply * 100).toInt()}%"
binding.pbReplay.max = (it.targetReply * 100).toInt()
binding.pbReplay.progress = (it.currentReply * 100).toInt()
binding.tvReplayGap.text =
((it.targetReply - it.currentReply) * 100).toInt().let { replyGap ->
if (replyGap > 0) {
"还差${replyGap}%可完成"
} else {
"已完成"
}
}
disposable?.dispose() disposable?.dispose()
disposable = Observable.intervalRange(0, Int.MAX_VALUE.toLong(), 0, 1, TimeUnit.SECONDS) disposable = Observable.intervalRange(0, Int.MAX_VALUE.toLong(), 0, 1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread()).compose(bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()).compose(bindToLifecycle())
@@ -125,6 +102,159 @@ class AnchorGradeDialog : BaseDialog<DialogAnchorGradeBinding>() {
} }
@SuppressLint("SetTextI18n")
private fun setupDiamond(it: AnchorGradeInfo, constraintSet: ConstraintSet) {
binding.tvDiamondTargetNum.text = it.currentDiamond.toString()
binding.pbDiamond.max = 1000
var startEndID = R.id.tv_diamond_d
var endEndID = R.id.tv_diamond_c
when (it.currentDiamond) {
in 0 until it.levelCDiamond -> {
binding.ivDiamondLevelD.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.pbDiamond.progress =
((it.currentDiamond / it.levelCDiamond.toDouble() * 250).toInt()
.coerceAtLeast(30))
.coerceAtMost(220)
binding.tvDiamondGap.text = "还差${it.levelCDiamond - it.currentDiamond}"
}
in it.levelCDiamond until it.levelBDiamond -> {
binding.ivDiamondLevelC.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivDiamondLevelC.isVisible = true
binding.pbDiamond.progress =
(((it.currentDiamond - it.levelCDiamond) / (it.levelBDiamond - it.levelCDiamond).toDouble() * 250).toInt()
.coerceAtLeast(15) + 250)
.coerceAtMost(485)
startEndID = R.id.tv_diamond_c
endEndID = R.id.tv_diamond_b
binding.tvDiamondGap.text = "还差${it.levelBDiamond - it.currentDiamond}"
}
in it.levelBDiamond until it.levelADiamond -> {
binding.ivDiamondLevelB.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivDiamondLevelC.isVisible = true
binding.ivDiamondLevelB.isVisible = true
binding.pbDiamond.progress =
(((it.currentDiamond - it.levelBDiamond) / (it.levelADiamond - it.levelBDiamond).toDouble() * 250).toInt()
.coerceAtLeast(15) + 500)
.coerceAtMost(735)
startEndID = R.id.tv_diamond_b
endEndID = R.id.tv_diamond_a
binding.tvDiamondGap.text = "还差${it.levelADiamond - it.currentDiamond}"
}
in it.levelADiamond until it.levelSDiamond -> {
binding.ivDiamondLevelA.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivDiamondLevelC.isVisible = true
binding.ivDiamondLevelB.isVisible = true
binding.ivDiamondLevelA.isVisible = true
binding.pbDiamond.progress =
(((it.currentDiamond - it.levelADiamond) / (it.levelSDiamond - it.levelADiamond).toDouble() * 250).toInt()
.coerceAtLeast(30) + 750)
.coerceAtMost(970)
startEndID = R.id.tv_diamond_a
endEndID = R.id.tv_diamond_s
binding.tvDiamondGap.text = "还差${it.levelSDiamond - it.currentDiamond}"
}
else -> {
binding.ivDiamondLevelS.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivDiamondLevelC.isVisible = true
binding.ivDiamondLevelB.isVisible = true
binding.ivDiamondLevelA.isVisible = true
binding.ivDiamondLevelS.isVisible = true
binding.pbDiamond.progress = binding.pbDiamond.max
binding.tvDiamondGap.isGone = true
}
}
constraintSet.connect(
R.id.tv_diamond_gap,
ConstraintSet.START,
startEndID,
ConstraintSet.END
)
constraintSet.connect(
R.id.tv_diamond_gap,
ConstraintSet.END,
endEndID,
ConstraintSet.START
)
}
@SuppressLint("SetTextI18n")
private fun setupReply(it: AnchorGradeInfo, constraintSet: ConstraintSet) {
if (!it.satisfyReply) {
constraintSet.setVisibility(R.id.group_reply, View.GONE)
constraintSet.setVisibility(R.id.tv_satisfy_reply, View.VISIBLE)
return
}
binding.pbReplay.max = 1000
binding.tvReplayTargetNum.text = "${(it.currentReply * 100).toInt()}%"
var startEndIDReply = R.id.tv_replay_d
var endEndIDReply = R.id.tv_replay_c
if (0 <= it.currentReply && it.currentReply < it.levelCReply) {
binding.ivReplayLevelD.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.pbReplay.progress =
((it.currentReply / it.levelCReply * 250).toInt()
.coerceAtLeast(30))
.coerceAtMost(220)
binding.tvReplayGap.text =
"还差${((it.levelCReply - it.currentReply) * 100).toInt()}%"
} else if (it.levelCReply <= it.currentReply && it.currentReply < it.levelBReply) {
binding.ivReplayLevelC.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivReplayLevelC.isVisible = true
binding.pbDiamond.progress =
(((it.currentReply - it.levelCReply) / (it.levelBReply - it.levelCReply) * 250).toInt()
.coerceAtLeast(15) + 250)
.coerceAtMost(485)
startEndIDReply = R.id.tv_replay_c
endEndIDReply = R.id.tv_replay_b
binding.tvReplayGap.text =
"还差${((it.levelBReply - it.currentReply) * 100).toInt()}%"
} else if (it.levelBReply <= it.currentReply && it.currentReply < it.levelAReply) {
binding.ivReplayLevelB.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivReplayLevelC.isVisible = true
binding.ivReplayLevelB.isVisible = true
binding.pbReplay.progress =
(((it.currentReply - it.levelBReply) / (it.levelAReply - it.levelBReply) * 250).toInt()
.coerceAtLeast(15) + 500)
.coerceAtMost(735)
startEndIDReply = R.id.tv_replay_b
endEndIDReply = R.id.tv_replay_a
binding.tvReplayGap.text =
"还差${((it.levelAReply - it.currentReply) * 100).toInt()}%"
} else if (it.levelAReply <= it.currentReply && it.currentReply < it.levelSReply) {
binding.ivReplayLevelA.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivReplayLevelC.isVisible = true
binding.ivReplayLevelB.isVisible = true
binding.ivReplayLevelA.isVisible = true
binding.pbReplay.progress =
(((it.currentReply - it.levelAReply) / (it.levelSReply - it.levelAReply) * 250).toInt()
.coerceAtLeast(30) + 750)
.coerceAtMost(970)
startEndIDReply = R.id.tv_replay_a
endEndIDReply = R.id.tv_replay_s
binding.tvReplayGap.text =
"还差${((it.levelSReply - it.currentReply) * 100).toInt()}%"
} else {
binding.ivReplayLevelS.setImageResource(R.drawable.anchor_grade_ic_level_current)
binding.ivReplayLevelC.isVisible = true
binding.ivReplayLevelB.isVisible = true
binding.ivReplayLevelA.isVisible = true
binding.ivReplayLevelS.isVisible = true
binding.pbReplay.progress = binding.pbReplay.max
binding.tvReplayGap.isGone = true
}
constraintSet.connect(
R.id.tv_replay_gap,
ConstraintSet.START,
startEndIDReply,
ConstraintSet.END
)
constraintSet.connect(
R.id.tv_replay_gap,
ConstraintSet.END,
endEndIDReply,
ConstraintSet.START
)
}
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
disposable?.dispose() disposable?.dispose()

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 B

View File

@@ -3,7 +3,7 @@
<!-- 定义轨道的背景 --> <!-- 定义轨道的背景 -->
<item android:id="@android:id/background"> <item android:id="@android:id/background">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<solid android:color="#1a000124" /> <solid android:color="@color/transparent" />
<corners android:radius="@dimen/dp_10" /> <corners android:radius="@dimen/dp_10" />
</shape> </shape>
</item> </item>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_transparent_10" />
<corners android:radius="100dp" />
</shape>

View File

@@ -8,6 +8,7 @@
tools:background="@color/black_transparent_50"> tools:background="@color/black_transparent_50">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_root"
android:layout_width="303dp" android:layout_width="303dp"
android:layout_height="280dp" android:layout_height="280dp"
android:layout_gravity="center" android:layout_gravity="center"
@@ -15,6 +16,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tv_curr_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
@@ -40,7 +42,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:layout_marginTop="48dp" android:layout_marginTop="48dp"
tools:src="@drawable/anchor_grade_bg_complete_text" android:src="@drawable/anchor_grade_bg_task_text"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@@ -48,7 +50,7 @@
android:id="@+id/tv_diamond" android:id="@+id/tv_diamond"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="18dp" android:layout_marginStart="20dp"
android:layout_marginTop="25dp" android:layout_marginTop="25dp"
android:text="收礼钻石数:" android:text="收礼钻石数:"
android:textColor="#8A8CAB" android:textColor="#8A8CAB"
@@ -66,64 +68,155 @@
app:layout_constraintStart_toEndOf="@id/tv_diamond" app:layout_constraintStart_toEndOf="@id/tv_diamond"
app:layout_constraintTop_toTopOf="@id/tv_diamond" /> app:layout_constraintTop_toTopOf="@id/tv_diamond" />
<ProgressBar <View
android:id="@+id/pb_diamond" android:id="@+id/view_bg_diamond_pb"
style="?android:attr/progressBarStyleHorizontal" android:layout_width="261dp"
android:layout_width="260dp" android:layout_height="9dp"
android:layout_height="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="3dp" android:background="@drawable/anchor_grade_bg_pb"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/anchor_grade_bg_pb"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_diamond" /> app:layout_constraintTop_toBottomOf="@id/tv_diamond" />
<ProgressBar
android:id="@+id/pb_diamond"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="261dp"
android:layout_height="4dp"
android:max="1000"
android:progress="666"
android:progressDrawable="@drawable/anchor_grade_bg_progress"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintEnd_toEndOf="@id/view_bg_diamond_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<ImageView
android:id="@+id/iv_diamond_level_d"
android:layout_width="8dp"
android:layout_height="8dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<ImageView
android:id="@+id/iv_diamond_level_c"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="63dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<ImageView
android:id="@+id/iv_diamond_level_b"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="126dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<ImageView
android:id="@+id/iv_diamond_level_a"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="189dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<ImageView
android:id="@+id/iv_diamond_level_s"
android:layout_width="8dp"
android:layout_height="8dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_diamond_pb"
app:layout_constraintEnd_toEndOf="@id/view_bg_diamond_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_diamond_pb" />
<TextView <TextView
android:id="@+id/tv_diamond_curr_level" android:id="@+id/tv_diamond_d"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="5dp" android:text="D"
android:includeFontPadding="false" android:textColor="@color/color_babbcd"
android:textColor="@color/white" android:textSize="10dp"
android:textSize="14dp" app:layout_constraintEnd_toEndOf="@id/iv_diamond_level_d"
app:layout_constraintBottom_toBottomOf="@id/pb_diamond" app:layout_constraintStart_toStartOf="@id/iv_diamond_level_d"
app:layout_constraintStart_toStartOf="@id/pb_diamond" app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb" />
app:layout_constraintTop_toTopOf="@id/pb_diamond"
tools:text="A" /> <TextView
android:id="@+id/tv_diamond_c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_diamond_level_c"
app:layout_constraintStart_toStartOf="@id/iv_diamond_level_c"
app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb" />
<TextView
android:id="@+id/tv_diamond_b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_diamond_level_b"
app:layout_constraintStart_toStartOf="@id/iv_diamond_level_b"
app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb" />
<TextView
android:id="@+id/tv_diamond_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_diamond_level_a"
app:layout_constraintStart_toStartOf="@id/iv_diamond_level_a"
app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb" />
<TextView
android:id="@+id/tv_diamond_s"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="S"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_diamond_level_s"
app:layout_constraintStart_toStartOf="@id/iv_diamond_level_s"
app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb" />
<TextView <TextView
android:id="@+id/tv_diamond_gap" android:id="@+id/tv_diamond_gap"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:fontFamily="sans-serif" android:fontFamily="sans-serif"
android:textColor="@color/white" android:textColor="@color/color_babbcd"
android:textSize="10dp" android:textSize="10dp"
app:layout_constraintBottom_toBottomOf="@id/pb_diamond" app:layout_constraintEnd_toEndOf="@id/tv_diamond_s"
app:layout_constraintStart_toEndOf="@id/tv_diamond_curr_level" app:layout_constraintStart_toStartOf="@id/tv_diamond_a"
app:layout_constraintTop_toTopOf="@id/pb_diamond" app:layout_constraintTop_toBottomOf="@id/view_bg_diamond_pb"
tools:text="还差3333钻可完成" /> tools:text="还差3333钻" />
<TextView
android:id="@+id/tv_diamond_next_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:includeFontPadding="false"
android:textColor="@color/white"
android:textSize="14dp"
app:layout_constraintBottom_toBottomOf="@id/pb_diamond"
app:layout_constraintEnd_toEndOf="@id/pb_diamond"
app:layout_constraintTop_toTopOf="@id/pb_diamond"
tools:text="S" />
<TextView <TextView
android:id="@+id/tv_replay" android:id="@+id/tv_replay"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="18dp" android:layout_marginStart="20dp"
android:layout_marginTop="23dp" android:layout_marginTop="23dp"
android:text="新用户私聊回复率:" android:text="新用户私聊回复率:"
android:textColor="#8A8CAB" android:textColor="#8A8CAB"
@@ -141,32 +234,135 @@
app:layout_constraintStart_toEndOf="@id/tv_replay" app:layout_constraintStart_toEndOf="@id/tv_replay"
app:layout_constraintTop_toTopOf="@id/tv_replay" /> app:layout_constraintTop_toTopOf="@id/tv_replay" />
<ProgressBar <View
android:id="@+id/pb_replay" android:id="@+id/view_bg_replay_pb"
style="?android:attr/progressBarStyleHorizontal" android:layout_width="261dp"
android:layout_width="260dp" android:layout_height="9dp"
android:layout_height="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="3dp" android:background="@drawable/anchor_grade_bg_pb"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/anchor_grade_bg_pb"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_replay" /> app:layout_constraintTop_toBottomOf="@id/tv_replay" />
<ProgressBar
android:id="@+id/pb_replay"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="261dp"
android:layout_height="4dp"
android:max="100"
android:progress="66"
android:progressDrawable="@drawable/anchor_grade_bg_progress"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintEnd_toEndOf="@id/view_bg_replay_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<ImageView
android:id="@+id/iv_replay_level_d"
android:layout_width="8dp"
android:layout_height="8dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<ImageView
android:id="@+id/iv_replay_level_c"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="63dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<ImageView
android:id="@+id/iv_replay_level_b"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="126dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<ImageView
android:id="@+id/iv_replay_level_a"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_marginStart="189dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintStart_toStartOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<ImageView
android:id="@+id/iv_replay_level_s"
android:layout_width="8dp"
android:layout_height="8dp"
android:src="@drawable/anchor_grade_ic_level_exceed"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@id/view_bg_replay_pb"
app:layout_constraintEnd_toEndOf="@id/view_bg_replay_pb"
app:layout_constraintTop_toTopOf="@id/view_bg_replay_pb" />
<TextView <TextView
android:id="@+id/tv_replay_curr_level" android:id="@+id/tv_replay_d"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="5dp" android:text="D"
android:includeFontPadding="false" android:textColor="@color/color_babbcd"
android:textColor="@color/white" android:textSize="10dp"
android:textSize="14dp" app:layout_constraintEnd_toEndOf="@id/iv_replay_level_d"
app:layout_constraintBottom_toBottomOf="@id/pb_replay" app:layout_constraintStart_toStartOf="@id/iv_replay_level_d"
app:layout_constraintStart_toStartOf="@id/pb_replay" app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb" />
app:layout_constraintTop_toTopOf="@id/pb_replay"
tools:text="A" /> <TextView
android:id="@+id/tv_replay_c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_replay_level_c"
app:layout_constraintStart_toStartOf="@id/iv_replay_level_c"
app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb" />
<TextView
android:id="@+id/tv_replay_b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_replay_level_b"
app:layout_constraintStart_toStartOf="@id/iv_replay_level_b"
app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb" />
<TextView
android:id="@+id/tv_replay_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_replay_level_a"
app:layout_constraintStart_toStartOf="@id/iv_replay_level_a"
app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb" />
<TextView
android:id="@+id/tv_replay_s"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="S"
android:textColor="@color/color_babbcd"
android:textSize="10dp"
app:layout_constraintEnd_toEndOf="@id/iv_replay_level_s"
app:layout_constraintStart_toStartOf="@id/iv_replay_level_s"
app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb" />
<TextView <TextView
android:id="@+id/tv_replay_gap" android:id="@+id/tv_replay_gap"
@@ -174,31 +370,40 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="2dp" android:layout_marginStart="2dp"
android:fontFamily="sans-serif" android:fontFamily="sans-serif"
android:textColor="@color/white" android:textColor="@color/color_babbcd"
android:textSize="10dp" android:textSize="10dp"
app:layout_constraintBottom_toBottomOf="@id/pb_replay" app:layout_constraintEnd_toEndOf="@id/tv_replay_s"
app:layout_constraintStart_toEndOf="@id/tv_replay_curr_level" app:layout_constraintStart_toStartOf="@id/tv_replay_a"
app:layout_constraintTop_toTopOf="@id/pb_replay" app:layout_constraintTop_toBottomOf="@id/view_bg_replay_pb"
tools:text="还差3333钻可完成" /> tools:text="还差10%" />
<TextView <TextView
android:id="@+id/tv_replay_next_level" android:id="@+id/tv_satisfy_reply"
android:layout_width="260dp"
android:layout_height="16dp"
android:layout_marginTop="7dp"
android:background="@drawable/shape_black_10_100dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="私聊回复人数未达最低标准,不显示回复率"
android:textColor="#ffbabbcd"
android:textSize="10sp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/tv_replay"
app:layout_constraintTop_toBottomOf="@id/tv_replay" />
<androidx.constraintlayout.widget.Group
android:id="@+id/group_reply"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="5dp" app:constraint_referenced_ids="iv_replay_level_d,iv_replay_level_c,iv_replay_level_b,iv_replay_level_a,iv_replay_level_s,tv_replay_d,tv_replay_c,tv_replay_b,tv_replay_a,tv_replay_s,pb_replay,view_bg_replay_pb,tv_replay_gap" />
android:includeFontPadding="false"
android:textColor="@color/white"
android:textSize="14dp"
app:layout_constraintBottom_toBottomOf="@id/pb_replay"
app:layout_constraintEnd_toEndOf="@id/pb_replay"
app:layout_constraintTop_toTopOf="@id/pb_replay"
tools:text="S" />
<ImageView <ImageView
android:id="@+id/iv_update_text" android:id="@+id/iv_update_text"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="17dp" android:layout_marginTop="28dp"
app:layout_goneMarginTop="42dp"
android:src="@drawable/anchor_grade_bg_update_text" android:src="@drawable/anchor_grade_bg_update_text"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View File

@@ -605,4 +605,5 @@
<color name="color_ffbc51">#FFFFBC51</color> <color name="color_ffbc51">#FFFFBC51</color>
<color name="color_5FCCE4">#5FCCE4</color> <color name="color_5FCCE4">#5FCCE4</color>
<color name="color_161958">#161958</color> <color name="color_161958">#161958</color>
<color name="color_babbcd">#BABBCD</color>
</resources> </resources>

View File

@@ -8,5 +8,14 @@ data class AnchorGradeInfo(
val targetDiamond: Int = 0, val targetDiamond: Int = 0,
val targetReply: Double = 0.0, val targetReply: Double = 0.0,
val uid: Int = 0, val uid: Int = 0,
val inWhitelist: Boolean? = null val inWhitelist: Boolean = false,
val levelSDiamond: Int = 0,
val levelSReply: Double = 0.0,
val levelADiamond: Int = 0,
val levelAReply: Double = 0.0,
val levelBDiamond: Int = 0,
val levelBReply: Double = 0.0,
val levelCDiamond: Int = 0,
val levelCReply: Double = 0.0,
val satisfyReply: Boolean = false,
) )