From f9bd5b7a9f3c0d3448c0f4ee0190f78357d6802d Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 21 Dec 2023 20:24:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=88=9D=E6=AD=A5=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E3=80=90=E9=A6=96=E9=A1=B5-=E6=B4=BE=E5=AF=B9=E3=80=91?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8EUI=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/home/activity/MoreRoomActivity.kt | 6 - .../adapter/HomeMagicIndicatorAdapter.java | 4 +- .../home/adapter/PartyHotMessageAdapter.kt | 26 ++- .../app/home/adapter/PartyRoomAdapter.kt | 26 ++- .../app/home/fragment/HomeFragment2.kt | 21 ++- .../app/home/fragment/MakeFriendsFragment.kt | 4 +- .../app/home/fragment/PartyFragment2.kt | 98 +++++++++--- .../app/home/fragment/PartyHotRoomFragment.kt | 75 +++++++++ .../app/home/fragment/PartyRoomFragment.kt | 35 ---- .../app/home/widget/HomeBannerViewPager.kt | 24 +++ .../drawable-xhdpi/ic_gift_service_arrow.png | Bin 397 -> 0 bytes .../res/drawable-xhdpi/ic_home_hot_hot.png | Bin 650 -> 0 bytes .../res/drawable-xxhdpi/home_bg_message.webp | Bin 0 -> 49824 bytes .../main/res/drawable-xxhdpi/home_ic_pk.webp | Bin 0 -> 6490 bytes .../res/drawable-xxhdpi/ic_home_hot_hot.webp | Bin 0 -> 1102 bytes .../main/res/drawable/home_bg_room_item.xml | 14 ++ .../drawable/home_ic_hot_message_arrow.xml | 12 ++ .../main/res/layout/activity_more_room.xml | 2 +- app/src/main/res/layout/home_fragment.xml | 10 +- .../main/res/layout/home_party_fragment.xml | 46 +++--- .../layout/home_party_item_hot_message.xml | 118 +++++++++++++- .../res/layout/home_party_room_fragment.xml | 2 +- .../main/res/layout/home_party_room_item.xml | 150 +++++++++++++++++- app/src/main/res/layout/item_gift_service.xml | 2 +- .../nnbc123/core/home/bean/HomeRoomInfo.java | 9 ++ .../com/nnbc123/core/home/model/HomeModel.kt | 20 ++- .../main/java/com/nnbc123/core/DemoCache.java | 18 +++ .../com/nnbc123/core/utils/StringExtension.kt | 6 +- library/build.gradle | 2 +- 29 files changed, 608 insertions(+), 122 deletions(-) create mode 100644 app/src/main/java/com/nnbc123/app/home/fragment/PartyHotRoomFragment.kt delete mode 100644 app/src/main/java/com/nnbc123/app/home/fragment/PartyRoomFragment.kt create mode 100644 app/src/main/java/com/nnbc123/app/home/widget/HomeBannerViewPager.kt delete mode 100644 app/src/main/res/drawable-xhdpi/ic_gift_service_arrow.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_home_hot_hot.png create mode 100644 app/src/main/res/drawable-xxhdpi/home_bg_message.webp create mode 100644 app/src/main/res/drawable-xxhdpi/home_ic_pk.webp create mode 100644 app/src/main/res/drawable-xxhdpi/ic_home_hot_hot.webp create mode 100644 app/src/main/res/drawable/home_bg_room_item.xml create mode 100644 app/src/main/res/drawable/home_ic_hot_message_arrow.xml diff --git a/app/src/main/java/com/nnbc123/app/home/activity/MoreRoomActivity.kt b/app/src/main/java/com/nnbc123/app/home/activity/MoreRoomActivity.kt index eaf0a6735..5d02e6da4 100644 --- a/app/src/main/java/com/nnbc123/app/home/activity/MoreRoomActivity.kt +++ b/app/src/main/java/com/nnbc123/app/home/activity/MoreRoomActivity.kt @@ -2,16 +2,10 @@ package com.nnbc123.app.home.activity import android.content.Context import android.content.Intent -import android.os.Bundle import com.nnbc123.app.R -import com.nnbc123.app.base.BaseActivity -import com.nnbc123.app.home.fragment.PartyFragment -import com.netease.nim.uikit.StatusBarUtil import com.nnbc123.app.base.BaseBindingActivity -import com.nnbc123.app.base.BaseViewBindingActivity import com.nnbc123.app.databinding.ActivityMoreRoomBinding import com.nnbc123.library.annatation.ActLayoutRes - @ActLayoutRes(R.layout.activity_more_room) class MoreRoomActivity : BaseBindingActivity() { diff --git a/app/src/main/java/com/nnbc123/app/home/adapter/HomeMagicIndicatorAdapter.java b/app/src/main/java/com/nnbc123/app/home/adapter/HomeMagicIndicatorAdapter.java index 941a3f196..b2b06c60a 100644 --- a/app/src/main/java/com/nnbc123/app/home/adapter/HomeMagicIndicatorAdapter.java +++ b/app/src/main/java/com/nnbc123/app/home/adapter/HomeMagicIndicatorAdapter.java @@ -47,8 +47,8 @@ public class HomeMagicIndicatorAdapter extends CommonNavigatorAdapter { scaleTransitionPagerTitleView.setMinScale(minScale); scaleTransitionPagerTitleView.setTextSize(textSize); scaleTransitionPagerTitleView.setAutoResetPivot(true); -// int padding = UIUtil.dip2px(context, 5); -// scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0); + int padding = UIUtil.dip2px(context, 6); + scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0); scaleTransitionPagerTitleView.setText(mTitleList.get(i)); scaleTransitionPagerTitleView.setOnClickListener(view -> { if (mOnItemSelectListener != null) { diff --git a/app/src/main/java/com/nnbc123/app/home/adapter/PartyHotMessageAdapter.kt b/app/src/main/java/com/nnbc123/app/home/adapter/PartyHotMessageAdapter.kt index c9b495c8c..db6d83d2d 100644 --- a/app/src/main/java/com/nnbc123/app/home/adapter/PartyHotMessageAdapter.kt +++ b/app/src/main/java/com/nnbc123/app/home/adapter/PartyHotMessageAdapter.kt @@ -1,6 +1,14 @@ package com.nnbc123.app.home.adapter +import android.util.Log +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView import com.nnbc123.app.R +import com.nnbc123.app.ui.utils.load +import com.nnbc123.app.ui.utils.loadAvatar +import com.nnbc123.core.home.bean.GiftServiceMsgVo +import com.nnbc123.core.utils.subAndReplaceDot2 import com.zhpan.bannerview.BaseBannerAdapter import com.zhpan.bannerview.BaseViewHolder @@ -8,17 +16,27 @@ import com.zhpan.bannerview.BaseViewHolder * Created by Max on 2023/12/18 19:02 * Desc: **/ -class PartyHotMessageAdapter : BaseBannerAdapter() { +class PartyHotMessageAdapter : BaseBannerAdapter() { override fun bindData( - holder: BaseViewHolder?, - data: String, + holder: BaseViewHolder, + item: GiftServiceMsgVo, position: Int, pageSize: Int ) { - holder?.setText(R.id.tv_name, data) + holder.setText(R.id.tv_nick_send, item.senderNick.subAndReplaceDot2(4)) + holder.setText(R.id.tv_nick_receiver, item.receiverNick.subAndReplaceDot2(4)) + holder.setText(R.id.tv_gift_name, item.giftName.subAndReplaceDot2(4)) + holder.setText(R.id.tv_gift_num, "x${item.giftNum}") + holder.findViewById(R.id.iv_avatar_send).loadAvatar(item.senderAvatar) + holder.findViewById(R.id.iv_avatar_receiver).loadAvatar(item.receiverAvatar) + holder.findViewById(R.id.iv_gift).load(item.giftPicUrl) } override fun getLayoutId(viewType: Int): Int { return R.layout.home_party_item_hot_message } + + fun getItem(position: Int): GiftServiceMsgVo? { + return mList.getOrNull(position) + } } \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/adapter/PartyRoomAdapter.kt b/app/src/main/java/com/nnbc123/app/home/adapter/PartyRoomAdapter.kt index d15473f4d..ae99fb3f4 100644 --- a/app/src/main/java/com/nnbc123/app/home/adapter/PartyRoomAdapter.kt +++ b/app/src/main/java/com/nnbc123/app/home/adapter/PartyRoomAdapter.kt @@ -1,8 +1,11 @@ package com.nnbc123.app.home.adapter +import android.widget.ImageView +import androidx.core.view.isGone import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.nnbc123.app.R +import com.nnbc123.app.ui.utils.load import com.nnbc123.core.home.bean.HomeRoomInfo /** @@ -12,6 +15,27 @@ import com.nnbc123.core.home.bean.HomeRoomInfo class PartyRoomAdapter : BaseQuickAdapter(R.layout.home_party_room_item) { override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) { - helper.setText(R.id.tv_name, item.roomName) + helper.apply { + getView(R.id.iv_cover).load(item.avatar) + setText(R.id.tv_online_number, "${item.onlineNum}") + setText(R.id.tv_name, item.title) + setGone(R.id.iv_tag, !item.tagPict.isNullOrEmpty()) + getView(R.id.iv_tag).load(item.tagPict) + setGone(R.id.iv_pk, item.isCrossPking) + setGone(R.id.iv_cover_foreground, !item.backgroundPic.isNullOrEmpty()) + getView(R.id.iv_cover_foreground).load(item.backgroundPic, defaultRes = R.color.transparent) + } + val avatars: Array = arrayOf( + helper.getView(R.id.iv_avatar_0), + helper.getView(R.id.iv_avatar_1), + helper.getView(R.id.iv_avatar_2), + helper.getView(R.id.iv_avatar_3), + helper.getView(R.id.iv_avatar_4) + ) + for (i in avatars.indices) { + val avatarUrl = item.micUsers?.getOrNull(i)?.avatar + avatars[i].isGone = avatarUrl.isNullOrBlank() + avatars[i].load(avatarUrl) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/HomeFragment2.kt b/app/src/main/java/com/nnbc123/app/home/fragment/HomeFragment2.kt index 44519d09a..a1aa56bce 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/HomeFragment2.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/HomeFragment2.kt @@ -12,8 +12,15 @@ import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.databinding.HomeFragmentBinding import com.nnbc123.app.home.activity.MoreRoomActivity import com.nnbc123.app.home.adapter.HomeMagicIndicatorAdapter +import com.nnbc123.app.home.helper.OpenRoomHelper +import com.nnbc123.app.ui.search.SearchActivity +import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator +import com.nnbc123.core.DemoCache +import com.nnbc123.core.UriProvider +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.library.annatation.ActLayoutRes /** @@ -30,14 +37,24 @@ class HomeFragment2 : BaseBindingFragment() { private fun initEvent() { mBinding.ivMyRoom.singleClick { + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOME_MY_ROOM_CLICK, "首页_我的房间") + OpenRoomHelper.openRoom(baseActivity) } mBinding.ivRanking.singleClick { - MoreRoomActivity.start(requireContext()) + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_HOME_RANK_CLICK, "首页_榜单") + CommonWebViewActivity.start(mContext, UriProvider.getRanking()) } mBinding.tvSearch.singleClick { - + StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SEARCH, "进入搜索页") + SearchActivity.start(activity) + //为啥触发条件这么恶心 我也不知道啊 + if (DemoCache.readAnchorCardView() == 0) { + DemoCache.saveAnchorCardView(1) + } } } diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/MakeFriendsFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/MakeFriendsFragment.kt index ec961f2fb..2f2195fbb 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/MakeFriendsFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/MakeFriendsFragment.kt @@ -12,9 +12,9 @@ import com.nnbc123.library.annatation.ActLayoutRes **/ @ActLayoutRes(R.layout.home_make_friends_fragment) -class MakeFriendsFragment : BaseBindingFragment(){ +class MakeFriendsFragment : BaseBindingFragment() { override fun initiate() { - requireActivity().supportFragmentManager + childFragmentManager .beginTransaction() .replace(R.id.fragment_container_view, MakeFriendsListFragment()) .commitAllowingStateLoss() diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment2.kt b/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment2.kt index 160d62f43..fb0a160d7 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment2.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/PartyFragment2.kt @@ -1,22 +1,31 @@ package com.nnbc123.app.home.fragment +import android.os.Bundle import androidx.core.view.isVisible import androidx.fragment.app.activityViewModels import androidx.viewpager2.widget.ViewPager2 +import com.chuhai.utils.ktx.singleClick import com.nnbc123.app.R import com.nnbc123.app.avroom.activity.AVRoomActivity import com.nnbc123.app.base.BaseBindingFragment import com.nnbc123.app.databinding.HomePartyFragmentBinding import com.nnbc123.app.home.HomeViewModel +import com.nnbc123.app.home.activity.MoreRoomActivity import com.nnbc123.app.home.adapter.PartyHotMessageAdapter import com.nnbc123.app.home.dialog.RecommendRoomDialog import com.nnbc123.app.home.helper.BannerHelper +import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity import com.nnbc123.app.ui.utils.load import com.nnbc123.app.ui.webview.CommonWebViewActivity import com.nnbc123.core.auth.AuthModel +import com.nnbc123.core.home.bean.GiftServiceMsgVo +import com.nnbc123.core.home.event.RefreshHomeDataEvent import com.nnbc123.core.statistic.StatisticManager import com.nnbc123.core.statistic.protocol.StatisticsProtocol import com.nnbc123.library.annatation.ActLayoutRes +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode /** * Created by Max on 2023/12/18 17:58 @@ -35,34 +44,71 @@ class PartyFragment2 : BaseBindingFragment() { initResource() initHotMessage() initBanner() - requireActivity().supportFragmentManager + mBinding.refreshLayout.isEnableLoadmore = false + mBinding.refreshLayout.isEnableOverScrollBounce = false + mBinding.refreshLayout.setOnRefreshListener { + mBinding.refreshLayout.finishRefresh() + EventBus.getDefault().post(RefreshHomeDataEvent()) + } + childFragmentManager .beginTransaction() - .replace(R.id.fragment_container_view, PartyRoomFragment()) + .replace(R.id.fragment_container_view, PartyHotRoomFragment()) .commitAllowingStateLoss() + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) { + if (isResumed) { + loadData() + } + } + + override fun onResume() { + super.onResume() loadData() } private fun loadData() { homeViewModel.getHomeResource() homeViewModel.getBannerInfo() + homeViewModel.getServiceGiftRecord() } private fun initHotMessage() { + val adapter = PartyHotMessageAdapter() mBinding.hotMessage.apply { setOrientation(ViewPager2.ORIENTATION_VERTICAL) - setAdapter(PartyHotMessageAdapter()) - setLifecycleRegistry(lifecycle) - }.create() - mBinding.hotMessage.refreshData(ArrayList().apply { - repeat(3) { - add(it.toString()) + setAdapter(adapter) + registerLifecycleObserver(lifecycle) + setUserInputEnabled(false) + setOnPageClickListener { clickedView, position -> + adapter.getItem(position)?.let { + AVRoomActivity.start(mContext, it.roomUid) + } } - }) - - mBinding.hotMessage.isVisible = true + }.create() + homeViewModel.giftServiceLiveData.observe(viewLifecycleOwner) { + if (it.isSuccess && !it.data.isNullOrEmpty()) { + mBinding.hotMessage.isVisible = true + mBinding.hotMessage.refreshData(it.data) + } + } } - private fun initResource(){ + private fun initResource() { + mBinding.ivResourceMore.singleClick { + MoreRoomActivity.start(requireContext()) + } + + homeViewModel.homeChatPickLiveData.observe(viewLifecycleOwner) { + dialogManager.dismissDialog() + it?.let { + if (it.isNotEmpty()) { + NimP2PMessageActivity.start(context, it) + } + } + } + homeViewModel.resourceLiveData.observe(this) { if (it.isNullOrEmpty()) { mBinding.groupResource.isVisible = false @@ -84,24 +130,14 @@ class PartyFragment2 : BaseBindingFragment() { "资源位点击", mapOf("user_id" to AuthModel.get().currentUid.toString()) ) - when { - it[i].resourceType == 5 -> { - CommonWebViewActivity.start(context, it[i].resourceContent) - } - i == 3 -> { - dialogManager.showProgressDialog(mContext) - homeViewModel.getHomeChatPick() - } - else -> { - dialogManager.showProgressDialog(mContext) - homeViewModel.getResourceJumpInfo(it[i].id) - } - } + dialogManager.showProgressDialog(mContext) + homeViewModel.getResourceJumpInfo(it[i].id) } } } - homeViewModel.resourceJumpLiveData.observe(this) { + homeViewModel.resourceJumpLiveData.observe(this) + { dialogManager.dismissDialog() it?.let { if (it.isPick) { @@ -126,4 +162,14 @@ class PartyFragment2 : BaseBindingFragment() { } } } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + EventBus.getDefault().register(this) + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } } \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/PartyHotRoomFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/PartyHotRoomFragment.kt new file mode 100644 index 000000000..d9b634784 --- /dev/null +++ b/app/src/main/java/com/nnbc123/app/home/fragment/PartyHotRoomFragment.kt @@ -0,0 +1,75 @@ +package com.nnbc123.app.home.fragment + +import android.annotation.SuppressLint +import android.os.Bundle +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import com.nnbc123.app.R +import com.nnbc123.app.avroom.activity.AVRoomActivity +import com.nnbc123.app.base.BaseBindingFragment +import com.nnbc123.app.common.EmptyViewHelper +import com.nnbc123.app.databinding.HomePartyRoomFragmentBinding +import com.nnbc123.app.home.HomeViewModel +import com.nnbc123.app.home.adapter.PartyRoomAdapter +import com.nnbc123.app.ui.utils.RVDelegate +import com.nnbc123.core.home.bean.HomeRoomInfo +import com.nnbc123.core.home.event.RefreshHomeDataEvent +import com.nnbc123.core.statistic.StatisticManager +import com.nnbc123.core.statistic.protocol.StatisticsProtocol +import com.nnbc123.library.annatation.ActLayoutRes +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +/** + * Created by Max on 2023/12/18 19:35 + * Desc: + **/ +@ActLayoutRes(R.layout.home_party_room_fragment) +class PartyHotRoomFragment : BaseBindingFragment() { + private val adapter = PartyRoomAdapter() + private val homeViewModel: HomeViewModel by activityViewModels() + override fun initiate() { + val rvDelegate = RVDelegate.Builder() + .setAdapter(adapter) + .setRecyclerView(mBinding.recyclerView) + .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无数据")) + .setLayoutManager(GridLayoutManager(context, 2)) + .build() + adapter.setOnItemClickListener { _, _, position -> + adapter.getItem(position)?.let { + AVRoomActivity.start(context, it.roomUid) + StatisticManager.Instance() + .onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "派对-热门进入房间成功") + } + } + homeViewModel.hotRoomLiveData.observe(this) { + rvDelegate.loadData(it) + } + } + + @SuppressLint("CheckResult") + fun loadData(isRefresh: Boolean) { + homeViewModel.getHotRoom(1, Int.MAX_VALUE) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + EventBus.getDefault().register(this) + } + + override fun onResume() { + super.onResume() + loadData(true) + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) { + if (isResumed) loadData(true) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/PartyRoomFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/PartyRoomFragment.kt deleted file mode 100644 index 5747664a3..000000000 --- a/app/src/main/java/com/nnbc123/app/home/fragment/PartyRoomFragment.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.nnbc123.app.home.fragment - -import androidx.fragment.app.activityViewModels -import androidx.recyclerview.widget.LinearLayoutManager -import com.nnbc123.app.R -import com.nnbc123.app.base.BaseBindingFragment -import com.nnbc123.app.common.EmptyViewHelper -import com.nnbc123.app.databinding.HomePartyRoomFragmentBinding -import com.nnbc123.app.home.HomeViewModel -import com.nnbc123.app.home.adapter.PartyRoomAdapter -import com.nnbc123.app.ui.utils.RVDelegate -import com.nnbc123.core.home.bean.HomeRoomInfo -import com.nnbc123.library.annatation.ActLayoutRes - -/** - * Created by Max on 2023/12/18 19:35 - * Desc: - **/ -@ActLayoutRes(R.layout.home_party_room_fragment) -class PartyRoomFragment : BaseBindingFragment() { - private val adapter = PartyRoomAdapter() - private val homeViewModel: HomeViewModel by activityViewModels() - override fun initiate() { - val rvDelegate = RVDelegate.Builder() - .setAdapter(adapter) - .setRecyclerView(mBinding.recyclerView) - .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无数据")) - .setLayoutManager(LinearLayoutManager(mContext)) - .build() - homeViewModel.getPartyRecommendRoomList() - homeViewModel.partyRecommendRoomLiveData.observe(this) { - rvDelegate.loadData(it) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/home/widget/HomeBannerViewPager.kt b/app/src/main/java/com/nnbc123/app/home/widget/HomeBannerViewPager.kt new file mode 100644 index 000000000..5fe8bb225 --- /dev/null +++ b/app/src/main/java/com/nnbc123/app/home/widget/HomeBannerViewPager.kt @@ -0,0 +1,24 @@ +package com.nnbc123.app.home.widget + +import android.content.Context +import android.util.AttributeSet +import com.zhpan.bannerview.BannerViewPager + +/** + * Created by Max on 2023/12/21 17:52 + * Desc:修复BannerViewPager高度模式为MeasureSpec.UNSPECIFIED,导致的未复用问题 + **/ +class HomeBannerViewPager : BannerViewPager { + constructor(context: Context?) : super(context) + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val hSize = MeasureSpec.getSize(heightMeasureSpec) + super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(hSize, MeasureSpec.EXACTLY)) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/ic_gift_service_arrow.png b/app/src/main/res/drawable-xhdpi/ic_gift_service_arrow.png deleted file mode 100644 index 386f5b21cd276ae526801a924d0328792dc2ac26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P)Px$M@d9MR9Hvt)Ui&(FcbyQ>kb*%;TMn)b0Vcv#gIxYO#B04Li_|1Tj4L5D&Y={ zUF>dbh=GBLkp)pTc_>kl5UOx$-=GZkYRm8BI`1j;Y^k1k5J9dNi3xR8W8kE)cP9P`W0x4xbJI$9BO+e6hj3uFfPx%L`g(JR7gv;l}%_9Q51#Gz3ViwMtMl)l#Wa6{FPjPoxPA!|3PPknw3m9%j0c4T19aaQ z1oJ@%2Ba8+q3cL>PX~ec0(7TZg7D&TNLp?K>{~phiyiI%2XL;uz@LUAi52AF#2)X}p#`D7E`hDPaSH0=g+1?ZD~ix9?Z2-=ks zw?uOh*)e^_^h6!1)}$c$3%-S7q@q8a5O=`&+XE1E2%Oz*fpG5KBn;65qC2)DDH0Tq zb@>AHg}aU5^v9xD>*ihw%9?jqZI9LuJH!kyq|{1+IEk{3p7K!_bu}V-0Gi!;H70cn56A{R(b;x z1MeVsYnlJx4Q<)k>G+3!Bq7nR{dTMH# z_XJprdgyr#B)x~=6$Sm^teX7u6gb^LksV)s8}080did3Pg!ly{Z*ZMO`R@J%nvc1O zTUwsuS}P?Hi5!4LJD3|F+04S`Am{@O8pPPtGm5$oI$yv-yE>UPP+eUGGoz6)zdN%o kHMV^Z9KU(*w_b6;Z`ikq8L~#ds{jB107*qoM6N<$g7y|8%K!iX diff --git a/app/src/main/res/drawable-xxhdpi/home_bg_message.webp b/app/src/main/res/drawable-xxhdpi/home_bg_message.webp new file mode 100644 index 0000000000000000000000000000000000000000..fe4198608f3a53c07e9b833e4b9bda6c835a1c04 GIT binary patch literal 49824 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/home_ic_pk.webp b/app/src/main/res/drawable-xxhdpi/home_ic_pk.webp new file mode 100644 index 0000000000000000000000000000000000000000..ea897b9701171301abe7fafb84120bfbebcf3a0c GIT binary patch literal 6490 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 A5&!@I literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_home_hot_hot.webp b/app/src/main/res/drawable-xxhdpi/ic_home_hot_hot.webp new file mode 100644 index 0000000000000000000000000000000000000000..d72c80ad85a45438116c9b9d02f239da688967fb GIT binary patch literal 1102 zcmV-U1hM;4Nk&FS1ONb6MM6+kP&iCF1ONapBftm{2{UcmC~3cH{0R?4ME`@eO@NKl z2j_x;BuR#IwKmR%nYL}*Zv2rB!LI0k;6DJ~Y_>yH&33rS*E%4s20(5k+pevwbI*GZ zt+mXDoG=MQdD{AgM;^E&@c&1@d-j@TJ%#Wcw2|aUuKNV&`BQj2`I~NJ+pcY;$J$?$ z3t5l}A%RT_SOkMFO)c-)OAaIe1lW9R8?~lfXWO1y?cG?cF;pM6KVc*0bC_i6q1=*6dGDRlaWaY2C zhtcUx=!6WRA(l~lW!n>eh}RR;|4;s4vZjWHt=Y@$W!>x3Z|?3-{9PO$r>xhtUNR7X zxCE2&TO%L)sgL-xFY#omMKKU0aA5&P8nxb}DJQP%%g&L(n-q&dgN0zRP?}Nn7Q^;5 z`TslXOF$S13!pG8HWH;{qQu%XkMlo>xn;o;D5AO>PVhMp~-r`XS%&8|ZE z>-F^X`3&)YmvZ8m_!5g33X20lEQo;^USG!AszVbC^U1ww@vL9gi~rlj{!bHaF|cX@ z7LNpC16VA!kQg&cgrPUxsVvTKHGkZxJs$!K1sDd!ONs}@3#Ar^0W2lnNbzjH)@L=v zzb&5lBH)#8m$}Ip7DFwM7$5<>P>hIS@s>dY2~rH3oL}Ah;>s4!eOG2Zwbw37zyg8< zU|1+Nun?qR2@nK9T7}L3r-)d+#r*%bF%>x^0|bbX29_l-5X3-AkTO^(0ZTfHgbQ_W z({DdSjYCmmAcJBF0Kj6Q01R6gpbUUekbn{>p~pVEx#@>e=1uBv3?Lo>P%*HwP!Plx z4p4$ffE_phz-XSUo5~Yo8#P-45p5ZWS`n;B#8$+x02>y$FoH+~2lng2>%yk5HeemY z@|MDqA<)u71c3zs5yOHYvLdmNCh+Q~b9U2;&$au_maQN~kR>ZUgb0EF1PRIk1Ry~K zNw|6B%PX61`u%zFOrT_|6>X^q%?bo81VmyPz>p;ggb2I;lO5vMCh_dU<^4Qzk+TSPIi97NW2ZjC4*I(oADsxc2Pt_~^pS>dDyc=5j U^G#oW%#-Tvc6;`IcAp9VZIj{?T>t<8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/home_bg_room_item.xml b/app/src/main/res/drawable/home_bg_room_item.xml new file mode 100644 index 000000000..ccf7cbbbc --- /dev/null +++ b/app/src/main/res/drawable/home_bg_room_item.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/app/src/main/res/drawable/home_ic_hot_message_arrow.xml b/app/src/main/res/drawable/home_ic_hot_message_arrow.xml new file mode 100644 index 000000000..6de4b83cd --- /dev/null +++ b/app/src/main/res/drawable/home_ic_hot_message_arrow.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/layout/activity_more_room.xml b/app/src/main/res/layout/activity_more_room.xml index 00ec434d7..256409fe6 100644 --- a/app/src/main/res/layout/activity_more_room.xml +++ b/app/src/main/res/layout/activity_more_room.xml @@ -1,5 +1,5 @@ - + + android:layout_height="match_parent" + android:background="#F5F5F7"> @@ -54,9 +54,7 @@ android:layout_gravity="center_vertical" android:layout_marginEnd="@dimen/dp_8" android:scaleType="fitCenter" - android:src="@drawable/home_ic_my_room" - android:visibility="gone" - tools:visibility="visible" /> + android:src="@drawable/home_ic_my_room" /> - - - + + + + + android:id="@+id/tv_nick_send" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/dp_4" + android:lines="1" + android:textColor="#2B2D33" + android:textSize="@dimen/dp_12" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/iv_avatar_send" + app:layout_constraintTop_toTopOf="parent" + tools:text="小半" /> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/home_party_room_fragment.xml b/app/src/main/res/layout/home_party_room_fragment.xml index b8ecdca33..96aed6d91 100644 --- a/app/src/main/res/layout/home_party_room_fragment.xml +++ b/app/src/main/res/layout/home_party_room_fragment.xml @@ -6,7 +6,7 @@ android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:clipToPadding="false" + android:layout_marginHorizontal="@dimen/dp_9" android:orientation="vertical" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:spanCount="2" /> diff --git a/app/src/main/res/layout/home_party_room_item.xml b/app/src/main/res/layout/home_party_room_item.xml index 6b4119f2c..c3af707c7 100644 --- a/app/src/main/res/layout/home_party_room_item.xml +++ b/app/src/main/res/layout/home_party_room_item.xml @@ -1,15 +1,157 @@ + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/dp_4" + android:layout_marginVertical="@dimen/dp_3"> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_gift_service.xml b/app/src/main/res/layout/item_gift_service.xml index e0ef07a15..ca2ef5190 100644 --- a/app/src/main/res/layout/item_gift_service.xml +++ b/app/src/main/res/layout/item_gift_service.xml @@ -86,6 +86,6 @@ + android:src="@drawable/home_ic_hot_message_arrow" /> \ No newline at end of file diff --git a/core/src/diff_src_erban/java/com/nnbc123/core/home/bean/HomeRoomInfo.java b/core/src/diff_src_erban/java/com/nnbc123/core/home/bean/HomeRoomInfo.java index f3c5c74aa..f64cd858d 100644 --- a/core/src/diff_src_erban/java/com/nnbc123/core/home/bean/HomeRoomInfo.java +++ b/core/src/diff_src_erban/java/com/nnbc123/core/home/bean/HomeRoomInfo.java @@ -44,6 +44,15 @@ public class HomeRoomInfo implements MultiItemEntity, Serializable { private boolean isChecked; private String iconContent; + private String backgroundPic; + + public String getBackgroundPic() { + return backgroundPic; + } + + public void setBackgroundPic(String backgroundPic) { + this.backgroundPic = backgroundPic; + } @Override public int getItemType() { diff --git a/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt index 2117a832c..cc400f3bf 100644 --- a/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt +++ b/core/src/diff_src_erban/java/com/nnbc123/core/home/model/HomeModel.kt @@ -1,5 +1,7 @@ package com.nnbc123.core.home.model +import com.google.gson.Gson +import com.nnbc123.core.DemoCache import com.nnbc123.core.auth.AuthModel import com.nnbc123.core.base.BaseModel import com.nnbc123.core.bean.response.ServiceResult @@ -13,10 +15,16 @@ import com.nnbc123.core.room.bean.SingleRoomSortInfo import com.nnbc123.core.room.game.GameInfo import com.nnbc123.core.user.bean.AnchorGradeInfo import com.nnbc123.core.user.bean.UserInfo +import com.nnbc123.core.utils.SharedPreferenceUtils import com.nnbc123.core.utils.net.RxHelper import com.nnbc123.core.utils.net.launchRequest import com.nnbc123.library.net.rxnet.RxNet import io.reactivex.Single +import io.reactivex.disposables.Disposable +import io.reactivex.disposables.Disposables +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.DisposableHandle +import kotlinx.coroutines.withContext import retrofit2.http.GET import retrofit2.http.POST import retrofit2.http.Query @@ -109,10 +117,20 @@ object HomeModel : BaseModel() { launchRequest { api.getPlayRoom() } + + fun getHomeResourceByLocal(): MutableList? { + return DemoCache.readHomeResourceList() + } suspend fun getHomeResource(): MutableList? = launchRequest { - api.getHomeResource() + val result = api.getHomeResource() + if (result.isSuccess) { + withContext(Dispatchers.Main) { + DemoCache.saveHomeResourceList(result.data) + } + } + result } suspend fun getResourceJumpInfo(id: Int): HomeRoomInfo? = diff --git a/core/src/main/java/com/nnbc123/core/DemoCache.java b/core/src/main/java/com/nnbc123/core/DemoCache.java index e28e027e6..dfdccfbce 100644 --- a/core/src/main/java/com/nnbc123/core/DemoCache.java +++ b/core/src/main/java/com/nnbc123/core/DemoCache.java @@ -7,6 +7,7 @@ import androidx.annotation.Nullable; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.netease.nimlib.sdk.StatusBarNotificationConfig; +import com.nnbc123.core.home.bean.ResourceInfo; import com.nnbc123.xchat_android_constants.XChatConstants; import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.entity.AccountInfo; @@ -64,6 +65,7 @@ public class DemoCache { private static final String KEY_SHOW_RADISH_TIP = "key_show_radish_tip"; private static final String KEY_NEW_GIFT_TYPE_TIP = "key_new_gift_type_tip"; private static final String KEY_NEW_GIFT_TYPE_TIP_INDICATOR = "key_new_gift_type_tip_indicator"; + private static final String KEY_HOME_RESOURCE_LIST = "key_home_resource_list"; private static StatusBarNotificationConfig notificationConfig; @@ -385,4 +387,20 @@ public class DemoCache { return SettingsPref.instance().getBoolean(KEY_NEW_GIFT_TYPE_TIP_INDICATOR, true); } + + public static void saveHomeResourceList(List value) { + SharedPreferenceUtils.put(KEY_HOME_RESOURCE_LIST, new Gson().toJson(value)); + } + + public static List readHomeResourceList() { + try { + String jsonString = String.valueOf(SharedPreferenceUtils.get(KEY_HOME_RESOURCE_LIST, "")); + if (TextUtils.isEmpty(jsonString)) return null; + return new Gson().fromJson(jsonString, + new TypeToken>() { + }.getType()); + } catch (Exception e) { + return null; + } + } } diff --git a/core/src/main/java/com/nnbc123/core/utils/StringExtension.kt b/core/src/main/java/com/nnbc123/core/utils/StringExtension.kt index a2c18ac95..6bef2b6ba 100644 --- a/core/src/main/java/com/nnbc123/core/utils/StringExtension.kt +++ b/core/src/main/java/com/nnbc123/core/utils/StringExtension.kt @@ -5,8 +5,12 @@ import com.nnbc123.library.utils.SingleToastUtil fun String?.subAndReplaceDot(maxLength: Int = 6): String { + return subAndReplaceDot2(maxLength, "...") +} + +fun String?.subAndReplaceDot2(maxLength: Int = 6, suffix: String = ".."): String { if (this == null) return "" - return if (this.length > maxLength) this.substring(0, maxLength) + "..." else this + return if (this.length > maxLength) this.substring(0, maxLength) + suffix else this } fun String?.sub(maxLength: Int = 6): String { diff --git a/library/build.gradle b/library/build.gradle index 6df601859..90f8046e4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -134,7 +134,7 @@ dependencies { api "jp.wasabeef:glide-transformations:${GlideTransformationsVersion}" - api 'com.github.zhpanvip:BannerViewPager:3.5.6' + api 'com.github.zhpanvip:BannerViewPager:3.5.12' api 'com.google.android.exoplayer:exoplayer:2.18.1'