feat:完善抢红包文案和交互
This commit is contained in:
@@ -1300,6 +1300,9 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
|
||||
val dialog = RoomOperationDialog(mContext)
|
||||
dialog.setOnActionListener {
|
||||
redPackageSendDialog = RedPackageSendDialog2()
|
||||
redPackageSendDialog?.setOnDismissListener {
|
||||
redPackageSendDialog = null
|
||||
}
|
||||
redPackageSendDialog?.show(activity)
|
||||
}
|
||||
dialog.show()
|
||||
|
@@ -18,11 +18,10 @@ import com.chuhai.utils.ktx.toStringRes
|
||||
import com.chuhai.utils.spannable.spannableBuilder
|
||||
import com.trello.rxlifecycle3.android.FragmentEvent
|
||||
import com.yizhuan.erban.R
|
||||
import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog
|
||||
import com.yizhuan.erban.base.BaseDialog
|
||||
import com.yizhuan.erban.databinding.RedPackageOpenDialogBinding
|
||||
import com.yizhuan.erban.ui.utils.loadAvatar
|
||||
import com.yizhuan.erban.utils.UserUtils
|
||||
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration
|
||||
import com.yizhuan.xchat_android_core.auth.AuthModel
|
||||
import com.yizhuan.xchat_android_core.home.event.FollowRoomEvent
|
||||
import com.yizhuan.xchat_android_core.home.model.CollectionRoomModel
|
||||
@@ -68,6 +67,12 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
// 按钮动画是否有效(至少转过了一周期)
|
||||
private var isValidOfBtnAnimator: Boolean = false
|
||||
|
||||
// 按钮执行函数
|
||||
private var btnRunnable: (() -> Unit)? = null
|
||||
|
||||
// 打开红包接口请求中
|
||||
private var opening = false
|
||||
|
||||
companion object {
|
||||
fun newInstance(data: RedPackageData): RedPackageOpenDialog2 {
|
||||
return RedPackageOpenDialog2().apply {
|
||||
@@ -97,7 +102,7 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
}
|
||||
|
||||
binding.layoutBtn.singleClick {
|
||||
openRedPackage(data)
|
||||
btnRunnable?.invoke()
|
||||
}
|
||||
loadData(data)
|
||||
}
|
||||
@@ -122,12 +127,22 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.tvOpenTips.isVisible = false
|
||||
when (data.kind) {
|
||||
2 -> {
|
||||
binding.tvOpenTips.setText(R.string.red_package_open_tips_follow)
|
||||
binding.tvOpenTips.spannableBuilder()
|
||||
.appendText(
|
||||
text = R.string.red_package_open_tips_follow.toStringRes(),
|
||||
textColor = getColorById(R.color.color_FFF87A)
|
||||
)
|
||||
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply()
|
||||
binding.tvOpenTips.isVisible = true
|
||||
}
|
||||
|
||||
3 -> {
|
||||
binding.tvOpenTips.setText(R.string.red_package_open_tips_share)
|
||||
binding.tvOpenTips.spannableBuilder()
|
||||
.appendText(
|
||||
text = R.string.red_package_open_tips_share.toStringRes(),
|
||||
textColor = getColorById(R.color.color_FFF87A)
|
||||
)
|
||||
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply()
|
||||
binding.tvOpenTips.isVisible = true
|
||||
}
|
||||
|
||||
@@ -138,7 +153,7 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
text = data.message ?: "",
|
||||
textColor = getColorById(R.color.color_FFF87A)
|
||||
)
|
||||
.appendText(text = R.string.red_package_open_tips_msg2.toStringRes()).apply()
|
||||
.appendText(text = R.string.red_package_open_tips_msg_end.toStringRes()).apply()
|
||||
binding.tvOpenTips.isVisible = true
|
||||
}
|
||||
|
||||
@@ -155,7 +170,7 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.groupBtnTime.isVisible = false
|
||||
binding.ivBtnGet.isVisible = false
|
||||
binding.tvBtnMsg.isVisible = false
|
||||
binding.layoutBtn.isEnabled = false
|
||||
btnRunnable = null
|
||||
|
||||
val gap = (data.beginTime ?: 0) - ServiceTime.time
|
||||
// 开始了?
|
||||
@@ -175,18 +190,30 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.tvBtnMsg.isVisible = true
|
||||
if (started) {
|
||||
binding.tvBtnMsg.setText(R.string.red_package_open_btn_no)
|
||||
btnRunnable = {
|
||||
SingleToastUtil.showToast(R.string.red_package_open_no_tips)
|
||||
}
|
||||
} else {
|
||||
when (data.kind) {
|
||||
2 -> {
|
||||
binding.tvBtnMsg.setText(R.string.red_package_open_btn_follow)
|
||||
btnRunnable = {
|
||||
SingleToastUtil.showToast("2")
|
||||
}
|
||||
}
|
||||
|
||||
3 -> {
|
||||
binding.tvBtnMsg.setText(R.string.red_package_open_btn_share)
|
||||
btnRunnable = {
|
||||
SingleToastUtil.showToast("3")
|
||||
}
|
||||
}
|
||||
|
||||
4 -> {
|
||||
binding.tvBtnMsg.setText(R.string.red_package_open_btn_msg)
|
||||
btnRunnable = {
|
||||
SingleToastUtil.showToast("4")
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
@@ -239,7 +266,13 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.tvBtnMsg.isVisible = false
|
||||
binding.groupBtnTime.isVisible = false
|
||||
binding.ivBtnGet.isVisible = true
|
||||
binding.layoutBtn.isEnabled = true
|
||||
btnRunnable = {
|
||||
if (!opening) {
|
||||
this.data?.let {
|
||||
openRedPackage(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadTips(msg: String?) {
|
||||
@@ -255,29 +288,29 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
* 打开红包
|
||||
*/
|
||||
private fun openRedPackage(data: RedPackageData) {
|
||||
binding.layoutBtn.isEnabled = false
|
||||
opening = true
|
||||
openResultRunnable = null
|
||||
startRedPacketAnim(binding.layoutBtn)
|
||||
RedPackageModel.openRedPackage(data.id ?: 0)
|
||||
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)).subscribe({
|
||||
if (isValidOfBtnAnimator) {
|
||||
btnAnimator?.cancel()
|
||||
openSuccess(it)
|
||||
} else {
|
||||
openResultRunnable = {
|
||||
if (isValidOfBtnAnimator) {
|
||||
btnAnimator?.cancel()
|
||||
openSuccess(it)
|
||||
} else {
|
||||
openResultRunnable = {
|
||||
openSuccess(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
if (isValidOfBtnAnimator) {
|
||||
btnAnimator?.cancel()
|
||||
openFail(it)
|
||||
} else {
|
||||
openResultRunnable = {
|
||||
}, {
|
||||
if (isValidOfBtnAnimator) {
|
||||
btnAnimator?.cancel()
|
||||
openFail(it)
|
||||
} else {
|
||||
openResultRunnable = {
|
||||
openFail(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,6 +324,8 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.tvResultEmptyTips.isVisible = false
|
||||
binding.ivResultSendAvatar.loadAvatar(data.redEnvelopeVO?.userVO?.avatar)
|
||||
binding.tvResultSendName.text = data.redEnvelopeVO?.userVO?.nick ?: ""
|
||||
val name = data.redEnvelopeVO?.userVO?.nick ?: ""
|
||||
binding.tvResultSendName.text = name.take(8) + "..的紅包"
|
||||
binding.tvMessage.text = data.redEnvelopeVO?.message
|
||||
binding.tvCount.text = R.string.red_package_result_count_format.toStringRes()
|
||||
.format(data.redEnvelopeVO?.pickNum ?: 0, data.redEnvelopeVO?.totalNum ?: 0)
|
||||
@@ -302,10 +337,8 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
|
||||
when (data.redEnvelopeState) {
|
||||
RedEnvelopeState.SUCCESS -> {
|
||||
val item = data.redEnvelopeItemVOs?.firstOrNull {
|
||||
it.userVO.uid == UserUtils.getUserUid()
|
||||
}
|
||||
binding.tvMoney.text = item?.amount?.substringBefore(".")
|
||||
binding.tvMoney.text = data.currentUserAmount.toString().substringBefore(".")
|
||||
binding.groupResultMoney.isVisible = true
|
||||
|
||||
// 下面是延续老代码保留的
|
||||
if (!AvRoomDataManager.get().isRoomFans) {
|
||||
@@ -324,6 +357,7 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
binding.tvResultEmptyTips.isVisible = true
|
||||
}
|
||||
}
|
||||
opening = false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -333,6 +367,7 @@ class RedPackageOpenDialog2 : BaseDialog<RedPackageOpenDialogBinding>() {
|
||||
switchToOpenState()
|
||||
btnAnimator?.cancel()
|
||||
SingleToastUtil.showToast(throwable.message)
|
||||
opening = false
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
|
@@ -1,7 +1,8 @@
|
||||
package com.yizhuan.erban.avroom.redpackage.open
|
||||
|
||||
import android.graphics.Color
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import androidx.core.view.isVisible
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.yizhuan.erban.R
|
||||
@@ -39,5 +40,6 @@ class RedPackageResultAdapter :
|
||||
} catch (e: Exception) {
|
||||
helper.setText(R.id.tv_time, "")
|
||||
}
|
||||
helper.getView<View>(R.id.v_line).isVisible = helper.bindingAdapterPosition != itemCount - 1
|
||||
}
|
||||
}
|
@@ -4,7 +4,6 @@ package com.yizhuan.erban.avroom.redpackage.send
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.Gravity
|
||||
import android.view.WindowManager
|
||||
import com.bumptech.glide.manager.Lifecycle
|
||||
import com.chuhai.utils.ktx.singleClick
|
||||
import com.chuhai.utils.ktx.toStringRes
|
||||
import com.yizhuan.erban.R
|
||||
|
@@ -71,6 +71,7 @@ abstract class BaseDialog<T : ViewBinding> : RxDialogFragment() {
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
this.onDismissListener = null
|
||||
}
|
||||
|
||||
abstract fun init()
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.4 KiB |
BIN
app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.webp
Normal file
BIN
app/src/main/res/drawable-xxhdpi/red_package_open_btn_get.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 113 KiB |
@@ -2,6 +2,6 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="8dp"/>
|
||||
<corners android:radius="10dp"/>
|
||||
<solid android:color="#FFE03654"/>
|
||||
</shape>
|
@@ -143,6 +143,7 @@
|
||||
android:id="@+id/tv_btn_msg"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/red_package_open_btn_msg"
|
||||
android:textColor="@color/color_BF461F"
|
||||
android:textSize="14dp"
|
||||
@@ -199,7 +200,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.8969" />
|
||||
app:layout_constraintGuide_percent="0.854" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_money"
|
||||
@@ -310,8 +311,9 @@
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@drawable/shape_e03654_8"
|
||||
android:background="@drawable/shape_e03654_10"
|
||||
android:orientation="vertical"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_count"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
@@ -76,5 +76,16 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/tv_money"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/v_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="2px"
|
||||
android:layout_marginHorizontal="14dp"
|
||||
android:background="@color/color_ffffff_30"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|
@@ -709,4 +709,5 @@
|
||||
<color name="color_94959C">#94959C</color>
|
||||
<color name="color_BF461F">#FFBF461F</color>
|
||||
<color name="color_FFF87A">#FFFFF87A</color>
|
||||
<color name="color_ffffff_30">#4CFFFFFF</color>
|
||||
</resources>
|
||||
|
@@ -5170,14 +5170,15 @@
|
||||
<string name="red_package_open_btn_share">分享房間\n搶紅包</string>
|
||||
<string name="red_package_open_btn_follow">關注主播\n搶紅包</string>
|
||||
<string name="red_package_open_btn_no">未參與活動</string>
|
||||
<string name="red_package_open_no_tips">未參與活動,無法搶該紅包</string>
|
||||
<string name="red_package_result_money_tips">已存入錢包,請到我的收益確認</string>
|
||||
<string name="red_package_result_count_format">已領取%s/%s個</string>
|
||||
<string name="red_package_widget_get">搶紅包</string>
|
||||
<string name="red_package_msg_empty_tips">請輸入彈幕內容</string>
|
||||
<string name="red_package_open_tips_follow">關注主播可搶紅包</string>
|
||||
<string name="red_package_open_tips_share">分享房間可搶紅包</string>
|
||||
<string name="red_package_open_tips_follow">關注主播</string>
|
||||
<string name="red_package_open_tips_share">对外分享房間</string>
|
||||
<string name="red_package_open_tips_msg1">發送彈幕</string>
|
||||
<string name="red_package_open_tips_msg2">可搶紅包</string>
|
||||
<string name="red_package_open_tips_msg_end">可搶紅包</string>
|
||||
<string name="red_package_result_empty_tips">搶完了,下次早點來哦~</string>
|
||||
|
||||
|
||||
|
@@ -8,7 +8,7 @@ import java.io.Serializable
|
||||
* Desc:红包数据
|
||||
**/
|
||||
data class RedPackageData(
|
||||
val amount: Long?,
|
||||
val amount: Double?,
|
||||
val avatar: String?,
|
||||
val beginTime: Long?,
|
||||
val commissionAmount: Long?,
|
||||
|
@@ -2,17 +2,19 @@ package com.yizhuan.xchat_android_core.redpackage
|
||||
|
||||
|
||||
data class RedPackageInfo(
|
||||
var redEnvelopeItemVOs: List<RedEnvelopeItemVO>? = null,
|
||||
var redEnvelopeVO: RedEnvelopeVO? = null,
|
||||
var redEnvelopeItemVOs: List<RedEnvelopeItemVO>? = null,
|
||||
var redEnvelopeVO: RedEnvelopeVO? = null,
|
||||
|
||||
/**
|
||||
* ING(1, “开抢中”)
|
||||
* TIME_OUT(2, “过时”)
|
||||
* REMAIN_ZERO(3, “抢光了”)
|
||||
* SUCCESS(4, “抢到了”)
|
||||
* WILL(5, “将要开始”)
|
||||
* TIME_OUT_BACK(6, “超时已退还”)
|
||||
*/
|
||||
var redEnvelopeState: Int = 0
|
||||
/**
|
||||
* ING(1, “开抢中”)
|
||||
* TIME_OUT(2, “过时”)
|
||||
* REMAIN_ZERO(3, “抢光了”)
|
||||
* SUCCESS(4, “抢到了”)
|
||||
* WILL(5, “将要开始”)
|
||||
* TIME_OUT_BACK(6, “超时已退还”)
|
||||
*/
|
||||
var redEnvelopeState: Int = 0,
|
||||
|
||||
// 领取金额
|
||||
var currentUserAmount: Double?
|
||||
)
|
Reference in New Issue
Block a user