feat: vip送礼飘屏,待联调

This commit is contained in:
eggmanQQQ
2024-11-07 11:05:10 +08:00
parent 47f3a05fd2
commit 4dbba76ead
6 changed files with 179 additions and 208 deletions

View File

@@ -19,6 +19,7 @@ import com.chwl.app.databinding.DialogRoomBgSetBinding
import com.chwl.app.databinding.ItemRoomBgSetBinding
import com.chwl.core.bean.response.ServiceResult
import com.chwl.core.gift.bean.RoomBgInfo
import com.chwl.core.gift.bean.RoomBgInfoItem
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.utils.MyUriUtils
import com.chwl.core.utils.net.RxHelper
@@ -46,9 +47,9 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
lateinit var mAdapter: RoomBgAdapter
private var mDataFree = mutableListOf<RoomBgInfo.Item>()
private var mDataPay = mutableListOf<RoomBgInfo.Item>()
private var mDataCustom = mutableListOf<RoomBgInfo.Item>()
private var mDataFree = mutableListOf<RoomBgInfoItem>()
private var mDataPay = mutableListOf<RoomBgInfoItem>()
private var mDataCustom = mutableListOf<RoomBgInfoItem>()
private var mCustomGoldPrice = 0
private var mCustomHour = 0
@@ -70,13 +71,15 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
when (view.id) {
R.id.statusPlay, R.id.statusBuy -> {
data?.let {
showPreViewDialog(null, it.url, it.id, true)
if (data.status != RoomBgInfo.Status.S_REJECT) {
showPreViewDialog(null, it.url, it.id, true)
}
}
}
R.id.statusDel -> {
data?.let {
del(it.id)
del(data)
}
}
@@ -122,14 +125,18 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
mCustomHour = data.customHour
mCustomGoldPrice = data.customGoldPrice
mDataFree.clear()
mDataPay.clear()
mDataCustom.clear()
data.itemList.let {
val map = it.groupBy { it.type }
if (map.containsKey(RoomBgInfo.Type.T_FREE)) mDataFree =
map[RoomBgInfo.Type.T_FREE] as MutableList<RoomBgInfo.Item>
map[RoomBgInfo.Type.T_FREE] as MutableList<RoomBgInfoItem>
if (map.containsKey(RoomBgInfo.Type.T_PAY)) mDataPay =
map[RoomBgInfo.Type.T_PAY] as MutableList<RoomBgInfo.Item>
map[RoomBgInfo.Type.T_PAY] as MutableList<RoomBgInfoItem>
if (map.containsKey(RoomBgInfo.Type.T_CUSTOM)) mDataCustom =
map[RoomBgInfo.Type.T_CUSTOM] as MutableList<RoomBgInfo.Item>
map[RoomBgInfo.Type.T_CUSTOM] as MutableList<RoomBgInfoItem>
}
setViewSelect(mSelectType)
@@ -144,11 +151,12 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
.subscribe()
}
private fun del(id: Long) {
private fun del(data: RoomBgInfoItem) {
if (data.type != RoomBgInfo.Type.T_FREE) return
val dialog = DialogManager(requireActivity())
dialog.showOkCancelDialog(R.string.community_photo_bigphotoactivity_08.getString(),object : DialogManager.AbsOkDialogListener() {
override fun onOk() {
postDel(id)
postDel(data.id)
.compose(bindToLifecycle())
.doOnSuccess {
ToastUtils.show(R.string.doSuccess)
@@ -165,7 +173,7 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
}
private fun select(data: RoomBgInfo.Item) {
private fun select(data: RoomBgInfoItem) {
if (data.remainHour != -1 || data.type == RoomBgInfo.Type.T_FREE) {
if (data.status == RoomBgInfo.Status.S_SUCCESS) {
postSelect(data.id)
@@ -245,12 +253,12 @@ class RoomBgSetDialog : BaseDialogFragment<DialogRoomBgSetBinding>() {
}
class RoomBgAdapter() : BaseBindingAdapter<ItemRoomBgSetBinding, RoomBgInfo.Item>() {
class RoomBgAdapter() : BaseBindingAdapter<ItemRoomBgSetBinding, RoomBgInfoItem>() {
override fun convert(
helper: BaseBindingViewHolder<ItemRoomBgSetBinding>,
data: RoomBgInfo.Item
data: RoomBgInfoItem
) {
val binding = helper.binding

View File

@@ -12,6 +12,7 @@ import com.chwl.app.support.float.BaseFloatView
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.app.ui.widget.dialog.AllServiceGiftGoRoomTipsDialog
import com.chwl.core.noble.bean.AllServiceGiftProtocol
import com.chwl.core.utils.SpanUtils
import com.example.lib_utils.ktx.getColorById
import com.example.lib_utils.ktx.singleClick
import com.example.lib_utils.spannable.SpannableTextBuilder
@@ -47,60 +48,51 @@ class GiftNotify(context: Context) : BaseFloatView(context) {
startDelayRemove(stayTime)
}
private fun bindData(
data: AllServiceGiftProtocol.DataBean,
binding: LayoutGiftNotifyBinding
) {
binding.ivAvatar.singleClick {
private fun bindData(data: AllServiceGiftProtocol.DataBean, binding: LayoutGiftNotifyBinding) {
val svga = "svga/cp_level_up_${data.levelNum}.svga"
binding.rootBg.loadFile(svga)
ImageLoadUtils.loadAvatar(data.sendUserAvatar ?: "", binding.ivAvatar)
val message = context.getString(R.string.all_gift_message_format).format(data.sendUserNick ?: "", data.recvUserNick ?: "")
SpannableTextBuilder(binding.tvNames).appendText(message)
.setTextStyle(
data.sendUserNick ?: "",
binding.tvNames.context.getColorById(R.color.color_FFE468)
)
.setTextStyle(
data.recvUserNick + " ",
binding.tvNames.context.getColorById(R.color.color_FFE468)
).apply()
setupTextMarquee(binding.tvNames)
if ((data.giftNum) <= 1) {
binding.tvGiftCount.text = ""
} else {
SpanUtils.with(binding.tvGiftCount)
.append(data.giftName).setFontSize(11,true)
.append(" X")
.append(data.giftNum.toString()).setFontSize(17,true)
}
ImageLoadUtils.loadImage(binding.ivGift.getContext(), data.giftUrl, binding.ivGift)
binding.tvRoomName.text = data.roomTitle
binding.groupRoom.isVisible = data.roomUid != 0L
binding.tvRoomName.singleClick {
goRoom(data)
}
binding.tvRoomGo.singleClick {
goRoom(data)
}
ImageLoadUtils.loadImage(binding.ivGift.getContext(), data.giftUrl, binding.ivGift)
ImageLoadUtils.loadAvatar(data.sendUserAvatar ?: "", binding.ivAvatar)
binding.tvRoomName.text = data.roomTitle
if ((data.giftNum) <= 1) {
binding.tvCount.text = ""
} else {
binding.tvCount.text = "X${data.giftNum}"
}
val message = context.getString(R.string.all_gift_message_format)
.format(data.sendUserNick ?: "", data.recvUserNick ?: "", data.giftName ?: "")
SpannableTextBuilder(binding.tvMessage).appendText(message)
.setTextStyle(
data.sendUserNick ?: "",
binding.tvMessage.context.getColorById(R.color.color_FFE468)
)
.setTextStyle(
data.recvUserNick + " ",
binding.tvMessage.context.getColorById(R.color.color_FFE468)
)
.setTextStyle(
data.giftName ?: "",
binding.tvMessage.context.getColorById(R.color.white)
).apply()
when (data.levelNum.toIntOrNull()) {
2 -> {
binding.ivAvatarBg.setImageResource(R.drawable.all_service_gift_bg_avatar_2)
binding.layoutRoot.setBackgroundResource(R.drawable.all_service_gift_bg_2)
binding.tvRoomGo.setBackgroundResource(R.drawable.all_service_gift_bg_room_go2)
}
3 -> {
binding.ivAvatarBg.setImageResource(R.drawable.all_service_gift_bg_avatar_3)
binding.layoutRoot.setBackgroundResource(R.drawable.all_service_gift_bg_3)
binding.tvRoomGo.setBackgroundResource(R.drawable.all_service_gift_bg_room_go3)
}
else -> {
binding.ivAvatarBg.setImageDrawable(null)
binding.layoutRoot.setBackgroundResource(R.drawable.all_service_gift_bg_1)
binding.tvRoomGo.setBackgroundResource(R.drawable.all_service_gift_bg_room_go1)
}
}
setupTextMarquee(binding.tvMessage)
binding.groupRoom.isVisible = data.roomUid != 0L
}
/**
@@ -126,9 +118,7 @@ class GiftNotify(context: Context) : BaseFloatView(context) {
}
}
private fun goRoom(
data: AllServiceGiftProtocol.DataBean
) {
private fun goRoom(data: AllServiceGiftProtocol.DataBean) {
if (data.roomUid <= 0L) {
// 非房间场景送的礼物
return

View File

@@ -285,6 +285,7 @@ public class CommonWebViewActivity extends BaseActivity {
FILECHOOSER_RESULTCODE);
}
//todo do 接收 webView 的 <input> 標籤的 文件選擇
// For Lollipop 5.0+ Devices
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean onShowFileChooser(WebView mWebView,

View File

@@ -3,153 +3,122 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="@dimen/dp_110"
app:layout_constraintTop_toTopOf="parent"
tools:background="#66ccff">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_root"
<com.chwl.library.widget.SVGAView
android:id="@+id/rootBg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/all_service_gift_bg_1"
app:layout_constraintDimensionRatio="h,375:69"
app:layout_constraintTop_toTopOf="parent">
android:layout_height="match_parent" />
<ImageView
android:id="@+id/iv_avatar_bg"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintDimensionRatio="w,89:69"
app:layout_constraintEnd_toEndOf="@id/iv_avatar"
app:layout_constraintStart_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar"
tools:background="@color/black" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_content_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.0586" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/ivAvatar"
android:layout_width="@dimen/dp_36"
android:layout_height="@dimen/dp_36"
android:layout_marginStart="@dimen/dp_39"
app:layout_constraintBottom_toBottomOf="@+id/rootBg"
app:layout_constraintStart_toStartOf="@+id/rootBg"
app:layout_constraintTop_toTopOf="@+id/rootBg"
tools:src="@drawable/default_avatar" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="w,1:1"
app:layout_constraintHeight_percent="0.6376"
app:layout_constraintStart_toStartOf="@id/line_content_start"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/default_avatar" />
<TextView
android:textDirection="locale"
android:id="@+id/tv_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="13dp"
android:layout_marginEnd="4.5dp"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:includeFontPadding="false"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14dp"
app:layout_constraintBottom_toTopOf="@id/tv_room_name"
app:layout_constraintEnd_toStartOf="@id/iv_gift"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="XXX 送给 XXX XXXX" />
<TextView
android:id="@+id/tvNames"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_1"
android:ellipsize="marquee"
app:layout_constraintEnd_toStartOf="@id/ivGift"
android:layout_marginEnd="@dimen/dp_2"
android:focusable="true"
android:focusableInTouchMode="true"
android:includeFontPadding="false"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:textColor="@color/white"
android:textDirection="locale"
android:textSize="@dimen/sp_11"
app:layout_constraintStart_toEndOf="@id/ivAvatar"
app:layout_constraintTop_toTopOf="@id/ivAvatar"
tools:text="XXX 送给 XXX ------------------------" />
<TextView
android:id="@+id/tv_room_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="2.5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="4.5dp"
android:includeFontPadding="false"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/tv_room_go"
app:layout_constraintStart_toEndOf="@id/iv_room"
app:layout_constraintTop_toBottomOf="@id/tv_message"
tools:text="X1111111111111111111" />
<TextView
android:id="@+id/tvGiftCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxWidth="180dp"
android:singleLine="true"
android:textColor="#ffeb66"
app:layout_constraintBottom_toBottomOf="@id/ivAvatar"
app:layout_constraintStart_toStartOf="@+id/tvNames"
tools:text="X10000" />
<TextView
android:id="@+id/tv_room_go"
android:layout_width="wrap_content"
android:layout_height="19dp"
android:layout_marginEnd="2dp"
android:background="@drawable/all_service_gift_bg_room_go1"
android:gravity="center"
android:paddingHorizontal="7.5dp"
android:singleLine="true"
android:text="@string/all_service_gift_room_go"
android:textColor="@color/white"
android:textSize="10dp"
app:layout_constraintBottom_toBottomOf="@id/tv_room_name"
app:layout_constraintEnd_toStartOf="@id/iv_gift"
app:layout_constraintTop_toTopOf="@id/tv_room_name" />
<ImageView
android:id="@+id/iv_room"
android:layout_width="12dp"
android:layout_height="12dp"
android:src="@drawable/all_service_gift_ic_room"
app:layout_constraintBottom_toBottomOf="@id/tv_room_name"
app:layout_constraintStart_toStartOf="@id/tv_message"
app:layout_constraintTop_toTopOf="@id/tv_room_name" />
<ImageView
android:id="@+id/ivGift"
android:layout_width="@dimen/dp_46"
android:layout_height="@dimen/dp_46"
app:layout_constraintEnd_toStartOf="@id/tvRoomName"
android:layout_marginEnd="@dimen/dp_2"
app:layout_constraintBottom_toBottomOf="@id/ivAvatar"
app:layout_constraintTop_toTopOf="@id/ivAvatar"
tools:background="@drawable/ic_gif" />
<ImageView
android:id="@+id/iv_gift"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="2dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="w,1:1"
app:layout_constraintEnd_toStartOf="@id/tv_count"
app:layout_constraintHeight_percent="0.9275"
app:layout_constraintTop_toTopOf="parent"
tools:background="@color/black" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_content_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.9413" />
<com.chwl.library.widget.text.DrawableTextView
android:id="@+id/tvRoomName"
android:layout_width="@dimen/dp_80"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_39"
android:drawablePadding="@dimen/dp_2"
android:includeFontPadding="false"
android:gravity=""
android:singleLine="true"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
app:dt_drawableLeftHeight="@dimen/dp_11"
app:dt_drawableLeftSrc="@drawable/all_service_gift_ic_room"
app:dt_drawableLeftWidth="@dimen/dp_11"
app:dt_drawableType="shape"
app:dt_soildColor="@color/transparent"
app:layout_constraintEnd_toEndOf="@id/rootBg"
app:layout_constraintTop_toTopOf="@id/tvNames"
tools:text="roomName" />
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxWidth="180dp"
android:singleLine="true"
android:textColor="@color/color_FFE468"
android:textSize="16dp"
android:textStyle="italic|bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/line_content_end"
app:layout_constraintTop_toTopOf="parent"
tools:text="X10000" />
<androidx.constraintlayout.widget.Group
android:id="@+id/group_room"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="tv_room_name,tv_room_go,iv_room"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.chwl.library.widget.text.DrawableTextView
android:id="@+id/tvRoomGo"
android:layout_width="@dimen/dp_55"
android:layout_height="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_2"
android:layout_marginEnd="@dimen/dp_9"
android:gravity="center"
android:text="GO"
android:textColor="#442a00"
android:textSize="@dimen/sp_13"
android:textStyle="bold"
app:dt_drawableType="shape"
app:dt_endColor="#ffe184"
app:dt_radius="@dimen/dp_10"
app:dt_startColor="#fffade"
app:layout_constraintEnd_toEndOf="@+id/tvRoomName"
app:layout_constraintTop_toBottomOf="@+id/tvRoomName" />
<androidx.constraintlayout.widget.Group
android:id="@+id/groupRoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="tvRoomName,tvRoomGo"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -6,18 +6,7 @@ public class RoomBgInfo {
public int customHour;
public int customGoldPrice;
public List<Item> itemList;
public static class Item{
public int buyHour; //购买小时
public int remainHour = -1; //剩余小时
public int goldPrice; //价格
public long id; //id
public int status; //状态 1=过期 0=审核中 1=通过 2=不过审
public int type; //类型 0=免费 1=付费 2=自定义
public boolean isCur; //使用
public String url;
}
public List<RoomBgInfoItem> itemList;
public @interface Type{

View File

@@ -0,0 +1,14 @@
package com.chwl.core.gift.bean;
public class RoomBgInfoItem {
public int buyHour; //购买小时
public int remainHour = -1; //剩余小时
public int goldPrice; //价格
public long id; //id
public int status; //状态 1=过期 0=审核中 1=通过 2=不过审
public int type; //类型 0=免费 1=付费 2=自定义
public boolean isCur; //使用
public String url;
}