diff --git a/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagConfig.java b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagConfig.java new file mode 100644 index 000000000..97ed9a24f --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagConfig.java @@ -0,0 +1,13 @@ +package com.chwl.app.avroom.bean; + +import java.util.List; + +import lombok.Data; + +@Data +public class LuckyBagConfig { + public int expireSeconds; + public List goldItems; + public List numItems; + public List timeItems; +} diff --git a/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagEntity.java b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagEntity.java new file mode 100644 index 000000000..b47e3ea93 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagEntity.java @@ -0,0 +1,19 @@ +package com.chwl.app.avroom.bean; + +import lombok.Data; + +@Data +public class LuckyBagEntity { + public long id; + public String avatar; + public String nick; + public long userId; + public long roomUid; + public int status; + public String Type; + public long endTime; // 倒计时结束时间, 表时可以开抢了, (东八区) + + + + +} diff --git a/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftBody.java b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftBody.java new file mode 100644 index 000000000..d5994a946 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftBody.java @@ -0,0 +1,25 @@ +package com.chwl.app.avroom.bean; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Data; + +@Data +public class LuckyBagGiftBody { + + public long roomUid; + public long uid; + public int countDownSecond; + public String type = "GIFT"; + public int num; + + public List giftItems; + + public void addLuckyBagGift(LuckyBagGiftItemBody index) { + if (giftItems == null) { + giftItems = new ArrayList<>(); + } + giftItems.add(index); + } +} diff --git a/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftItemBody.java b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftItemBody.java new file mode 100644 index 000000000..c54245eb2 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGiftItemBody.java @@ -0,0 +1,9 @@ +package com.chwl.app.avroom.bean; + +import lombok.Data; + +@Data +public class LuckyBagGiftItemBody { + public int giftId; + public int giftNum; +} diff --git a/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGoldBody.java b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGoldBody.java new file mode 100644 index 000000000..c2934ad74 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/LuckyBagGoldBody.java @@ -0,0 +1,16 @@ +package com.chwl.app.avroom.bean; + +import lombok.Data; + +@Data +public class LuckyBagGoldBody { + + public long roomUid; + public long uid; + public String type = "DIAMOND"; + public int countDownSecond; + public int num; + public int goldNum; + + +} diff --git a/app/src/main/java/com/chwl/app/avroom/bean/RoomLuckyBagInfo.java b/app/src/main/java/com/chwl/app/avroom/bean/RoomLuckyBagInfo.java new file mode 100644 index 000000000..c28f9e58b --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/bean/RoomLuckyBagInfo.java @@ -0,0 +1,13 @@ +package com.chwl.app.avroom.bean; + +import java.util.List; + +import lombok.Data; + +@Data +public class RoomLuckyBagInfo { + + public List redEnvelopeListVoList; + public LuckyBagConfig redEnvelopeV2Config; + +} diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagBiliDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagBiliDialog.kt index 89fa05c68..a026c0c04 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagBiliDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagBiliDialog.kt @@ -4,7 +4,6 @@ import android.view.Gravity import android.view.WindowManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.chad.library.adapter.base.BaseQuickAdapter import com.chwl.app.R import com.chwl.app.base.BaseDialogFragment import com.chwl.app.bindadapter.BaseBindingAdapter @@ -12,11 +11,21 @@ import com.chwl.app.bindadapter.BaseBindingViewHolder import com.chwl.app.databinding.DialogRoomLuckyBagBiliBinding import com.chwl.app.databinding.ItemRoomLuckyBagBiliBinding import com.chwl.app.ui.utils.load +import com.chwl.core.bean.response.ServiceResult +import com.chwl.core.gift.bean.RoomBgInfo +import com.chwl.core.manager.AvRoomDataManager import com.chwl.core.user.UserModel +import com.chwl.core.utils.net.RxHelper import com.chwl.library.common.util.ClickUtils.click import com.chwl.library.common.util.toColor +import com.chwl.library.net.rxnet.RxNet import com.chwl.library.widget.text.DrawableTextView import com.example.lib_utils.ktx.getColor +import com.google.gson.JsonElement +import io.reactivex.Single +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Query class RoomLuckyBagBiliDialog : BaseDialogFragment() { @@ -82,4 +91,35 @@ class RoomLuckyBagBiliDialog : BaseDialogFragment } + + + private fun getBoomInfo(roomUid: Long): Single { + return api.getBoomInfo(roomUid) + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()) + } + + private fun postDel(id: Long): Single { + return api.postDel(AvRoomDataManager.get().roomUid, id) + .compose(RxHelper.handleIgnoreData()) + .compose(RxHelper.handleSchedulers()) + } + + + private val api: Api = RxNet.create(Api::class.java); + + interface Api { + @GET("/room/background/list") + fun getBoomInfo(@Query("roomUid") roomUid: Long): Single> + + @POST("/room/background/del") + fun postDel( + @Query("roomUid") roomUid: Long, + @Query("id") id: Long + ): Single> + + } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt index 9de0bc51c..354d1f94e 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagDialog.kt @@ -4,10 +4,12 @@ import android.view.Gravity import android.view.View import android.view.WindowManager import androidx.core.widget.doOnTextChanged -import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.chad.library.adapter.base.BaseQuickAdapter import com.chwl.app.R +import com.chwl.app.avroom.bean.LuckyBagGiftBody +import com.chwl.app.avroom.bean.LuckyBagGoldBody import com.chwl.app.base.BaseDialogFragment import com.chwl.app.bindadapter.BaseBindingAdapter import com.chwl.app.bindadapter.BaseBindingViewHolder @@ -16,21 +18,32 @@ import com.chwl.app.databinding.ItemRoomLuckyBagGiftBinding import com.chwl.app.databinding.ItemRoomLuckyBagGoldBinding import com.chwl.app.databinding.ItemRoomLuckyBagTimeBinding import com.chwl.app.ui.utils.loadImage +import com.chwl.app.utils.RoomLuckyBagManager +import com.chwl.core.bean.response.ServiceResult import com.chwl.core.gift.GiftModel import com.chwl.core.gift.bean.GiftType import com.chwl.core.gift.bean.LuckyBagGift import com.chwl.core.gift.bean.LuckyBagGold -import com.chwl.core.gift.bean.LuckyBagTime +import com.chwl.core.gift.bean.LuckyBagNumber +import com.chwl.core.gift.bean.LuckyBagNumber.Type +import com.chwl.core.utils.net.RxHelper import com.chwl.core.widget.layoutmanager.pagergridlayoutmanager.PagerGridLayoutManager import com.chwl.library.common.util.ClickUtils.click +import com.chwl.library.common.util.isVerify +import com.chwl.library.common.util.postSafe import com.chwl.library.common.util.setMargin -import com.chwl.library.common.util.setViewWH import com.chwl.library.common.util.setVis import com.chwl.library.common.util.toColor import com.chwl.library.common.util.toDP +import com.chwl.library.net.rxnet.RxNet import com.example.lib_utils.ktx.getColor import com.example.lib_utils.ktx.getString import com.example.lib_utils.ktx.setPadding2 +import com.google.gson.JsonElement +import com.youth.banner.config.IndicatorConfig +import io.reactivex.Single +import retrofit2.http.Body +import retrofit2.http.POST class RoomLuckyBagDialog : BaseDialogFragment() { @@ -66,10 +79,14 @@ class RoomLuckyBagDialog : BaseDialogFragment() { view?.let { when (it.id) { R.id.up -> { - + mGiftData?.get(position)?.count = mGiftData?.get(position)?.count?.plus(1) + mGiftAdapter.notifyItemChanged(position) } R.id.down -> { - + if (mGiftData?.get(position)?.count != 0) { + mGiftData?.get(position)?.count = mGiftData?.get(position)?.count?.minus(1) + mGiftAdapter.notifyItemChanged(position) + } } else -> {} } @@ -78,12 +95,24 @@ class RoomLuckyBagDialog : BaseDialogFragment() { } binding.rvListGiftType.layoutManager = PagerGridLayoutManager(2,4,PagerGridLayoutManager.HORIZONTAL,false).apply { setPagerChangedListener(object : PagerGridLayoutManager.PagerChangedListener { - override fun onPagerCountChanged(pagerCount: Int) { + override fun onPagerCountChanged(pagerCount: Int) { + binding.giftIndicator.initView(IndicatorConfig().apply { + radius = 50.toDP() + selectedColor = R.color.color_FFEA5C.getColor() + normalColor = R.color.black.getColor() + selectedWidth = 5.toDP() + normalWidth = 5.toDP() + indicatorSpace = 3.toDP() + gravity = IndicatorConfig.Direction.CENTER + isAttachToBanner = false + currentPosition = 0 + indicatorSize = pagerCount + }) } override fun onPagerIndexSelected(prePagerIndex: Int, currentPagerIndex: Int) { - + binding.giftIndicator.onPageSelected(currentPagerIndex) } }) } @@ -95,11 +124,12 @@ class RoomLuckyBagDialog : BaseDialogFragment() { mGiftTimeAdapter.select(position) } } - binding.rvListGiftTime.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false) + binding.rvListGiftTime.layoutManager = GridLayoutManager(context,4,RecyclerView.VERTICAL,false) binding.rvListGiftTime.adapter = mGiftTimeAdapter + //--金币礼包 mGoldAdapter = GoldAdapter() @@ -108,7 +138,7 @@ class RoomLuckyBagDialog : BaseDialogFragment() { mGoldAdapter.select(position) } } - binding.rvListGoldType.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false) + binding.rvListGoldType.layoutManager = GridLayoutManager(context,4,RecyclerView.VERTICAL,false) binding.rvListGoldType.adapter = mGoldAdapter @@ -119,7 +149,7 @@ class RoomLuckyBagDialog : BaseDialogFragment() { mGoldNumAdapter.select(position) } } - binding.rvListGoldNum.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false) + binding.rvListGoldNum.layoutManager = GridLayoutManager(context,4,RecyclerView.VERTICAL,false) binding.rvListGoldNum.adapter = mGoldNumAdapter mGoldTimeAdapter = NumberItemAdapter() @@ -128,7 +158,7 @@ class RoomLuckyBagDialog : BaseDialogFragment() { mGoldTimeAdapter.select(position) } } - binding.rvListGiftTime.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false) + binding.rvListGiftTime.layoutManager = GridLayoutManager(context,4,RecyclerView.VERTICAL,false) binding.rvListGiftTime.adapter = mGoldTimeAdapter @@ -136,9 +166,46 @@ class RoomLuckyBagDialog : BaseDialogFragment() { val giftInfoList = GiftModel.get().getGiftInfoList(GiftType.GIFT_TYPE_NORMAL) giftInfoList.forEach { - mGiftData.add(LuckyBagGift()).apply { + mGiftData.add(LuckyBagGift().apply { + giftName = it.giftName + giftPrice = it.goldPrice + giftPic = it.giftUrl + }) + } + RoomLuckyBagManager.mLuckyBagConfig?.let { config -> + val goldData = arrayListOf() + val goldNumData = arrayListOf() + val timeData = arrayListOf() + + + config.goldItems.forEach { + goldData.add(LuckyBagGold().apply { + number = it + }) } + + config.numItems.forEach { + goldNumData.add(LuckyBagNumber().apply { + type = Type.num + number = it + }) + } + + config.timeItems.forEach { + timeData.add(LuckyBagNumber().apply { + type = Type.time + number = it + }) + } + + + mGoldAdapter.setNewData(goldData) + mGoldNumAdapter.setNewData(goldNumData) + + mGoldTimeAdapter.setNewData(timeData) + mGiftTimeAdapter.setNewData(timeData) + } @@ -159,15 +226,15 @@ class RoomLuckyBagDialog : BaseDialogFragment() { private fun tabChange(isGift:Boolean) { if (isGift) { - binding.bgGoldBag.setBackgroundResource(R.drawable.anim_match) - binding.bgGiftBag.setBackgroundResource(R.drawable.anim_match) + binding.bgGiftBag.setBackgroundResource(R.drawable.ic_lucky_bag_tab_bg_left_s) + binding.bgGoldBag.setBackgroundResource(R.drawable.ic_lucky_bag_tab_bg_right_n) binding.giftBagLayout.setVis(true,true) binding.goldBagLayout.setVis(false, true) mIsGift = true changeViewStatus() } else { - binding.bgGoldBag.setBackgroundResource(R.drawable.anim_match) - binding.bgGiftBag.setBackgroundResource(R.drawable.anim_match) + binding.bgGiftBag.setBackgroundResource(R.drawable.ic_lucky_bag_tab_bg_left_n) + binding.bgGoldBag.setBackgroundResource(R.drawable.ic_lucky_bag_tab_bg_right_s) binding.goldBagLayout.setVis(true,true) binding.giftBagLayout.setVis(false,true) mIsGift = false @@ -194,8 +261,8 @@ class RoomLuckyBagDialog : BaseDialogFragment() { binding.groupGiftSelect.setVis(true) binding.groupReViewGift.setVis(false) - binding.flListGiftTypeLayout.setMargin(top = 37) - binding.flListGiftTypeLayout.setViewWH(height = 282) + binding.flListGiftTypeLayout.setMargin(top = 37, bottom = 90) +// binding.flListGiftTypeLayout.setViewWH(height = 350) binding.bottomSpace.setVis(true) binding.userGold.setVis(true) @@ -212,8 +279,8 @@ class RoomLuckyBagDialog : BaseDialogFragment() { binding.groupReViewGift.setVis(true) binding.groupGiftSelect.setVis(false) - binding.flListGiftTypeLayout.setMargin(top = 83) - binding.flListGiftTypeLayout.setViewWH(height = 282) + binding.flListGiftTypeLayout.setMargin(top = 83, bottom = 100) +// binding.flListGiftTypeLayout.setViewWH(height = 300) binding.bottomSpace.setVis(false) binding.userGold.setVis(false) @@ -246,10 +313,20 @@ class RoomLuckyBagDialog : BaseDialogFragment() { it.gold.text = item.giftPrice.toString() it.etNum.setText(item.count.toString()) it.giftCount.text = item.count.toString() + it.etNum.setTextColor(if (item.count > 0) R.color.color_FFEA5C.getColor() else R.color.white.getColor()) it.etNum.doOnTextChanged { text, start, before, count -> - item.count = text?.toString()?.toInt()?:0 - it.giftCount.text = item.count.toString() + val num = if (text.isVerify()) text.toString().toInt() else 0 + item.count = num + it.giftCount?.postSafe { + it.giftCount.text = item.count.toString() + it.etNum.setTextColor(if (item.count> 0) R.color.color_FFEA5C.getColor() else R.color.white.getColor()) + } + + if (!text.isVerify()) { + it.etNum.setText("0") + it.etNum.setSelection(it.etNum.text.length) + } } helper.addOnClickListener(R.id.up) @@ -264,11 +341,12 @@ class RoomLuckyBagDialog : BaseDialogFragment() { } } } + } - private class NumberItemAdapter : BaseBindingAdapter() { + private class NumberItemAdapter : BaseBindingAdapter() { public fun select(pos:Int) { data?.forEachIndexed { index, luckyBagGold -> @@ -279,10 +357,10 @@ class RoomLuckyBagDialog : BaseDialogFragment() { override fun convert( helper: BaseBindingViewHolder, - item: LuckyBagTime + item: LuckyBagNumber ) { helper?.binding?.let { - it.number.text = item.time.toString() + it.number.text = item.number.toString() if (item.isSelect()) { it.number.changeGradientColor("#ff9f00".toColor(),-1,"#fff437".toColor()) @@ -326,10 +404,35 @@ class RoomLuckyBagDialog : BaseDialogFragment() { it.gold.setTextColor(R.color.color_292601.getColor()) } - } } } + + + private fun sentGiftBag(body: LuckyBagGiftBody?): Single { + return api.sentGiftBag(body) + .compose(RxHelper.handleIgnoreData()) + .compose(RxHelper.handleSchedulers()) + } + + private fun sentGoldBag(body: LuckyBagGoldBody?): Single { + return api.sentGoldBag(body) + .compose(RxHelper.handleIgnoreData()) + .compose(RxHelper.handleSchedulers()) + } + + private val api: Api = RxNet.create(Api::class.java) + private interface Api { + /** + * 发包 + */ + @POST("/new-red-envelope") + fun sentGiftBag(@Body body: LuckyBagGiftBody?): Single?> + @POST("/new-red-envelope") + fun sentGoldBag(@Body body: LuckyBagGoldBody?): Single?> + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagOpenDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagOpenDialog.kt index 951c55785..41d5e0831 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagOpenDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomLuckyBagOpenDialog.kt @@ -14,19 +14,29 @@ import com.chwl.app.bindadapter.BaseBindingViewHolder import com.chwl.app.databinding.DialogRoomLuckyBagOpenBinding import com.chwl.app.databinding.ItemRoomLuckyBagViewOthersBinding import com.chwl.app.ui.utils.loadImage +import com.chwl.core.bean.response.ServiceResult import com.chwl.core.gift.bean.LuckyBagViewOthers +import com.chwl.core.gift.bean.RoomBgInfo +import com.chwl.core.utils.net.RxHelper import com.chwl.library.common.util.ClickUtils.click import com.chwl.library.common.util.setViewWH import com.chwl.library.common.util.setVis +import com.chwl.library.common.util.toDP +import com.chwl.library.net.rxnet.RxNet import com.example.lib_utils.ktx.getString +import com.google.gson.JsonElement +import io.reactivex.Single import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Query class RoomLuckyBagOpenDialog : BaseDialogFragment() { - override var width = WindowManager.LayoutParams.MATCH_PARENT + override var width = 300.toDP() override var height = WindowManager.LayoutParams.WRAP_CONTENT override var dimAmount = 0f override var gravity = Gravity.CENTER @@ -59,10 +69,11 @@ class RoomLuckyBagOpenDialog : BaseDialogFragment } if (isGift) { - binding.bagImg.setImageResource(R.drawable.anim_match) + binding.bagImg.setImageResource(R.drawable.ic_lucky_bag_btn_gift_pic) } else { - binding.bagImg.setImageResource(R.drawable.anim_match) + binding.bagImg.setImageResource(R.drawable.ic_lucky_bag_btn_gold_pic) } + binding.bg.setBackgroundResource(R.drawable.ic_lucky_bag_open_bg) } private fun doOpenBag() { @@ -134,6 +145,7 @@ class RoomLuckyBagOpenDialog : BaseDialogFragment binding.comingHint.text = R.string._ver_24_luckBagOpen_Empty.getString() + binding.bagImg.setImageResource(R.drawable.ic_lucky_bag_empty) } @@ -143,6 +155,7 @@ class RoomLuckyBagOpenDialog : BaseDialogFragment binding.rvListViewOthers.setVis(true) binding.bg.setViewWH(height = 414) + binding.bg.setBackgroundResource(R.drawable.ic_lucky_bag_open_bili_bg) } @@ -182,4 +195,36 @@ class RoomLuckyBagOpenDialog : BaseDialogFragment } } + + + + + private fun getBoomInfo(roomUid: Long): Single { + return api.getBoomInfo(roomUid) + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()) + } + + private fun postLuckyBagOpen(redEnvelopeId: Long): Single { + return api.postLuckyBagOpen(redEnvelopeId) + .compose(RxHelper.handleIgnoreData()) + .compose(RxHelper.handleSchedulers()) + } + + + private val api: Api = RxNet.create(Api::class.java); + + interface Api { + @GET("/room/background/list") + fun getBoomInfo(@Query("roomUid") roomUid: Long): Single> + + + @POST("/new-red-envelope/open") + fun postLuckyBagOpen( + @Query("redEnvelopeId") redEnvelopeId: Long + ): Single> + + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt index a8336e822..78bd206f8 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt @@ -81,6 +81,7 @@ import com.chwl.app.ui.widget.rollviewpager.Util import com.chwl.app.ui.widget.rollviewpager.hintview.ColorPointHintView import com.chwl.app.utils.KeyBoardUtils import com.chwl.app.utils.RoomBoomManager +import com.chwl.app.utils.RoomLuckyBagManager import com.chwl.core.Constants import com.chwl.core.UriProvider import com.chwl.core.auth.AuthModel @@ -1868,6 +1869,7 @@ open class BaseRoomFragment?> : private fun upDateBoomExp(){ AvRoomModel.get().getBoomInfo(AvRoomDataManager.get().roomUid) + .compose(bindToLifecycle()) .doOnSuccess { it.forEach { info-> if (info.currLevel) { @@ -1888,12 +1890,12 @@ open class BaseRoomFragment?> : .doOnError { LogUtils.d(""+it?.message) } - .compose(bindToLifecycle()) .subscribe() } private fun checkBoomInfo() { AvRoomModel.get().getRoomBoomInfo(AvRoomDataManager.get().roomUid) + .compose(bindToLifecycle()) .doOnSuccess { boomInfo: RoomBoomInfo -> if (boomInfo.roomBoomSignVoList.isVerify()) { @@ -1920,8 +1922,18 @@ open class BaseRoomFragment?> : .doOnError { LogUtils.d("") } - .compose(bindToLifecycle()) .subscribe() + + checkLuckyBagInfo() + } + + private fun checkLuckyBagInfo() { + RoomLuckyBagManager.getLuckyBagInfo { + if (isAdded) { + "红包信息 = $it".doLog() + + } + } } public fun initFloatBtnLayout() { diff --git a/app/src/main/java/com/chwl/app/utils/RoomLuckyBagManager.kt b/app/src/main/java/com/chwl/app/utils/RoomLuckyBagManager.kt new file mode 100644 index 000000000..5bb0f0002 --- /dev/null +++ b/app/src/main/java/com/chwl/app/utils/RoomLuckyBagManager.kt @@ -0,0 +1,49 @@ +package com.chwl.app.utils + +import com.chwl.app.avroom.bean.LuckyBagConfig +import com.chwl.app.avroom.bean.RoomLuckyBagInfo +import com.chwl.core.bean.response.ServiceResult +import com.chwl.core.manager.AvRoomDataManager +import com.chwl.core.utils.net.RxHelper +import com.chwl.library.net.rxnet.RxNet +import io.reactivex.Single +import retrofit2.http.GET +import retrofit2.http.Query + +object RoomLuckyBagManager { + + var mLuckyBagConfig : LuckyBagConfig?= null + + public fun getLuckyBagInfo(run:(info:RoomLuckyBagInfo)->Unit) { + val roomUid = AvRoomDataManager.get().roomUid + if (roomUid > 0) { + getRoomLuckyBagInfo(roomUid) + .doOnSuccess { + mLuckyBagConfig = it.redEnvelopeV2Config + run(it) + } + .subscribe() + } + } + + + + + private fun getRoomLuckyBagInfo(roomUid: Long): Single { + return api.getRoomLuckyBagInfo(roomUid) + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()) + } + + private val api: Api = RxNet.create(Api::class.java); + + interface Api { + + @GET("/new-red-envelope/list") + fun getRoomLuckyBagInfo(@Query("roomUid") roomUid: Long): Single> + + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/view/MyCircleIndicator.java b/app/src/main/java/com/chwl/app/view/MyCircleIndicator.java new file mode 100644 index 000000000..50c563a0b --- /dev/null +++ b/app/src/main/java/com/chwl/app/view/MyCircleIndicator.java @@ -0,0 +1,78 @@ +package com.chwl.app.view; + +import android.content.Context; +import android.graphics.Canvas; +import android.util.AttributeSet; + +import com.chwl.library.common.util.OtherExtKt; +import com.youth.banner.config.IndicatorConfig; +import com.youth.banner.indicator.BaseIndicator; + +public class MyCircleIndicator extends BaseIndicator { + private int mNormalRadius; + private int mSelectedRadius; + private int maxRadius; + + + public MyCircleIndicator(Context context) { + this(context, null); + } + + public MyCircleIndicator(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public MyCircleIndicator(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + mNormalRadius = config.getNormalWidth() / 2; + mSelectedRadius = config.getSelectedWidth() / 2; + } + + public void initView(IndicatorConfig configs) { + config = configs; + mNormalRadius = config.getNormalWidth() / 2; + mSelectedRadius = config.getSelectedWidth() / 2; + this.post(() -> { + int width = config.getSelectedWidth() + (config.getNormalWidth() * (config.getIndicatorSize() - 1)) + (config.getIndicatorSpace() * ( config.getIndicatorSize() - 1)); + OtherExtKt.setViewWH(this,width,null,false); + invalidate(); + }); + + } + + +// @Override +// protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { +// super.onMeasure(widthMeasureSpec, heightMeasureSpec); +// int count = config.getIndicatorSize(); +// if (count <= 1) { +// return; +// } +// +// mNormalRadius = config.getNormalWidth() / 2; +// mSelectedRadius = config.getSelectedWidth() / 2; +// //考虑当 选中和默认 的大小不一样的情况 +// maxRadius = Math.max(mSelectedRadius, mNormalRadius); +// //间距*(总数-1)+选中宽度+默认宽度*(总数-1) +// int width = (count - 1) * config.getIndicatorSpace() + config.getSelectedWidth() + config.getNormalWidth() * (count - 1); +// setMeasuredDimension(width, Math.max(config.getNormalWidth(), config.getSelectedWidth())); +// } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + int count = config.getIndicatorSize(); + if (count <= 1) { + return; + } + float left = 0; + for (int i = 0; i < count; i++) { + mPaint.setColor(config.getCurrentPosition() == i ? config.getSelectedColor() : config.getNormalColor()); + int indicatorWidth = config.getCurrentPosition() == i ? config.getSelectedWidth() : config.getNormalWidth(); + int radius = config.getCurrentPosition() == i ? mSelectedRadius : mNormalRadius; + canvas.drawCircle(left + radius, indicatorWidth, radius, mPaint); + left += indicatorWidth + config.getIndicatorSpace(); + } + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gift_bg.png b/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gift_bg.png new file mode 100644 index 000000000..233769a91 Binary files /dev/null and b/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gift_bg.png differ diff --git a/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gold_bg.png b/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gold_bg.png new file mode 100644 index 000000000..08f21ca45 Binary files /dev/null and b/app/src/main/res/drawable-ldrtl-xhdpi/ic_lucky_bag_msg_gold_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_add.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_add.png new file mode 100644 index 000000000..e5efc0c1e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_add.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bg.png new file mode 100644 index 000000000..5dc8094f0 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili.png new file mode 100644 index 000000000..8b52e24f9 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_back.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_back.png new file mode 100644 index 000000000..5bbedbbe7 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_back.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_bg.png new file mode 100644 index 000000000..2f4cf4711 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_bili_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gift_pic.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gift_pic.png new file mode 100644 index 000000000..5b093dc9d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gift_pic.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gold_pic.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gold_pic.png new file mode 100644 index 000000000..5625727ed Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_btn_gold_pic.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_confirm.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_confirm.png new file mode 100644 index 000000000..8f6a0dd6e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_confirm.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_empty.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_empty.png new file mode 100644 index 000000000..0a93e5ef7 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_empty.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gift_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gift_bg.png new file mode 100644 index 000000000..a113b6143 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gift_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gold_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gold_bg.png new file mode 100644 index 000000000..c388684a3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_msg_gold_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bg.png new file mode 100644 index 000000000..fa43f3e11 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bili_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bili_bg.png new file mode 100644 index 000000000..4211a1fdf Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_open_bili_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gift_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gift_bg.png new file mode 100644 index 000000000..e0e4c5ef0 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gift_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gold_bg.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gold_bg.png new file mode 100644 index 000000000..76e1c717c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_room_notify_gold_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_rule.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_rule.png new file mode 100644 index 000000000..c9e46f1d8 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_rule.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_n.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_n.png new file mode 100644 index 000000000..5186ef6e9 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_n.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_s.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_s.png new file mode 100644 index 000000000..f86d2b96b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_left_s.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_n.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_n.png new file mode 100644 index 000000000..f2a1e815f Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_n.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_s.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_s.png new file mode 100644 index 000000000..76dc77b8f Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_bg_right_s.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_center.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_center.png new file mode 100644 index 000000000..a9b85455a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_tab_center.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_left.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_left.png new file mode 100644 index 000000000..c87713773 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_left.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_right.png b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_right.png new file mode 100644 index 000000000..12a3c83a9 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lucky_bag_title_right.png differ diff --git a/app/src/main/res/layout/dialog_room_lucky_bag.xml b/app/src/main/res/layout/dialog_room_lucky_bag.xml index ee9066efd..83c248049 100644 --- a/app/src/main/res/layout/dialog_room_lucky_bag.xml +++ b/app/src/main/res/layout/dialog_room_lucky_bag.xml @@ -5,9 +5,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:background="@color/black" - android:orientation="vertical" - tools:background="@color/black"> + android:orientation="vertical"> @@ -23,6 +22,8 @@ @@ -30,6 +31,7 @@ @@ -104,13 +107,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="9dp" + android:layoutDirection="ltr" android:gravity="center_horizontal|center_vertical" app:layout_constraintTop_toTopOf="parent"> + android:src="@drawable/ic_lucky_bag_title_left" /> + android:src="@drawable/ic_lucky_bag_title_right" /> - + + + + + + + + + + + + + + + + + + - - - - - - - - - - @@ -250,6 +267,7 @@ @@ -259,13 +277,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="47dp" + android:layoutDirection="ltr" android:gravity="center_horizontal|center_vertical" app:layout_constraintTop_toBottomOf="@+id/rvListGoldType"> + android:src="@drawable/ic_lucky_bag_title_left" /> + android:src="@drawable/ic_lucky_bag_title_right" /> @@ -295,13 +315,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="44dp" + android:layoutDirection="ltr" android:gravity="center_horizontal|center_vertical" app:layout_constraintTop_toBottomOf="@+id/rvListGoldNum"> + android:src="@drawable/ic_lucky_bag_title_left" /> + android:src="@drawable/ic_lucky_bag_title_right" /> @@ -336,6 +358,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingHorizontal="20dp" + android:layout_marginBottom="10dp" app:layout_constraintBottom_toBottomOf="parent"> @@ -413,6 +437,7 @@ android:layout_width="30dp" android:layout_height="30dp" android:layout_marginEnd="15dp" + android:src="@drawable/ic_lucky_bag_rule" android:paddingTop="3dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/topLayout" /> diff --git a/app/src/main/res/layout/dialog_room_lucky_bag_bili.xml b/app/src/main/res/layout/dialog_room_lucky_bag_bili.xml index f961437a5..59e9f7685 100644 --- a/app/src/main/res/layout/dialog_room_lucky_bag_bili.xml +++ b/app/src/main/res/layout/dialog_room_lucky_bag_bili.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="485dp" android:layout_gravity="bottom" - tools:background="@color/black"> + android:background="@drawable/ic_lucky_bag_bili_bg"> diff --git a/app/src/main/res/layout/dialog_room_lucky_bag_open.xml b/app/src/main/res/layout/dialog_room_lucky_bag_open.xml index ed30f85dd..009d51101 100644 --- a/app/src/main/res/layout/dialog_room_lucky_bag_open.xml +++ b/app/src/main/res/layout/dialog_room_lucky_bag_open.xml @@ -1,7 +1,8 @@ @@ -11,6 +12,7 @@ android:layout_width="match_parent" android:layout_height="326dp" android:layout_marginTop="38dp" + android:background="@drawable/ic_lucky_bag_open_bg" app:layout_constraintTop_toTopOf="@id/avatar" /> + android:background="@drawable/ic_lucky_bag_msg_gift_bg"> + android:background="@drawable/ic_lucky_bag_room_notify_gift_bg"> ?) : Boolean{ return false } + fun Double?.toNumString(byte:Int = 2) : String { if (this == null) { return "0"