派对banner使用组队开黑的

This commit is contained in:
huangjian
2023-03-16 17:10:21 +08:00
parent cd0898ae68
commit da01c04dcc
7 changed files with 161 additions and 95 deletions

View File

@@ -23,6 +23,9 @@ class HomeViewModel : BaseViewModel() {
private val _bannerLiveData = MutableLiveData<List<BannerInfo>>()
val bannerLiveData: LiveData<List<BannerInfo>> = _bannerLiveData
private val _partyBannerLiveData = MutableLiveData<List<BannerInfo>?>()
val partyBannerLiveData: LiveData<List<BannerInfo>?> = _partyBannerLiveData
private val _hotRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val hotRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _hotRoomLiveData
@@ -120,6 +123,23 @@ class HomeViewModel : BaseViewModel() {
)
}
fun getPartyBanner() {
safeLaunch(
onError = {
_partyBannerLiveData.value = null
},
block = {
val result = HomeModel.getHotRoom()
var bannerInfoList: List<BannerInfo>?
bannerInfoList = result?.find { it.isBanner }?.bannerVoList
if (bannerInfoList == null) {
bannerInfoList = HomeModel.getPlayRoom()?.find { it.isBanner }?.bannerVoList
}
_partyBannerLiveData.value = bannerInfoList
}
)
}
fun getGameRoom(pageNum: Int, pageSize: Int) {
safeLaunch(

View File

@@ -1,106 +1,104 @@
package com.nnbc123.app.home.fragment;
package com.nnbc123.app.home.fragment
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.nnbc123.app.R;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
import com.nnbc123.app.base.BaseFragment;
import com.nnbc123.app.common.EmptyViewHelper;
import com.nnbc123.app.home.adapter.HomePlayAdapter;
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.home.model.GameHomeModel;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.core.user.event.LoadLoginUserInfoEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import com.nnbc123.app.base.BaseFragment
import androidx.recyclerview.widget.RecyclerView
import com.nnbc123.app.home.adapter.HomePlayAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import org.greenrobot.eventbus.EventBus
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.app.avroom.activity.AVRoomActivity
import android.annotation.SuppressLint
import com.nnbc123.core.home.model.GameHomeModel
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import com.nnbc123.core.user.event.LoadLoginUserInfoEvent
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.app.home.fragment.HomePlayFragment
import android.os.Bundle
import android.view.View
import com.chad.library.adapter.base.BaseQuickAdapter
import com.nnbc123.app.R
/**
* create by lvzebiao @2020/1/7
*/
public class HomePlayFragment extends BaseFragment {
class HomePlayFragment : BaseFragment() {
private var recyclerView: RecyclerView? = null
private lateinit var playAdapter: HomePlayAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private RecyclerView recyclerView;
private HomePlayAdapter playAdapter;
private RVDelegate<HomeRoomInfo> rvDelegate;
public static HomePlayFragment newInstance() {
HomePlayFragment fragment = new HomePlayFragment();
Bundle bundle = new Bundle();
fragment.setArguments(bundle);
return fragment;
override fun getRootLayoutId(): Int {
return R.layout.fragment_home_play
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_home_play;
}
@Override
public void initiate() {
recyclerView = mView.findViewById(R.id.recycler_view);
EventBus.getDefault().register(this);
playAdapter = new HomePlayAdapter();
rvDelegate = new RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(playAdapter)
.setLayoutManager(new LinearLayoutManager(mContext))
.setRecyclerView(recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(getContext(), "暂无数据"))
.build();
playAdapter.setOnItemClickListener((adapter, view, position) -> {
HomeRoomInfo homePlayInfo = playAdapter.getItem(position);
if (homePlayInfo != null) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_KH_ROOM_SUCCESS, "点击组队开黑进入房间");
AVRoomActivity.startForFromType(mContext, homePlayInfo.getUid(), AVRoomActivity.FROM_TYPE_RECOMMEND);
override fun initiate() {
recyclerView = mView.findViewById(R.id.recycler_view)
EventBus.getDefault().register(this)
playAdapter = HomePlayAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(playAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setRecyclerView(recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无数据"))
.build()
playAdapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>, _: View, position: Int ->
val homePlayInfo = playAdapter.getItem(position)
if (homePlayInfo != null) {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_KH_ROOM_SUCCESS, "点击组队开黑进入房间")
AVRoomActivity.startForFromType(
mContext,
homePlayInfo.uid,
AVRoomActivity.FROM_TYPE_RECOMMEND
)
}
}
});
}
@Override
public void onResume() {
super.onResume();
loadData(true);
override fun onResume() {
super.onResume()
loadData(true)
}
@SuppressLint("CheckResult")
private void loadData(boolean refresh) {
GameHomeModel.get().getHomePlayV2()
.compose(bindToLifecycle())
.subscribe((homePlayInfoList, throwable) -> {
if (throwable != null) {
rvDelegate.loadErr(refresh);
} else {
rvDelegate.loadData(homePlayInfoList, refresh);
}
});
private fun loadData(refresh: Boolean) {
GameHomeModel.get().homePlayV2
.compose(bindToLifecycle())
.subscribe { homePlayInfoList: List<HomeRoomInfo>?, throwable: Throwable? ->
if (throwable != null) {
rvDelegate.loadErr(refresh)
} else {
rvDelegate.loadData(homePlayInfoList?.filter { !it.isBanner }, refresh)
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
if (isResumed()) loadData(true);
fun onLoadLoginUserInfoEvent(event: LoadLoginUserInfoEvent?) {
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
if (isResumed()) loadData(true);
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
@Override
public void onDestroyView() {
EventBus.getDefault().unregister(this);
super.onDestroyView();
override fun onDestroyView() {
EventBus.getDefault().unregister(this)
super.onDestroyView()
}
}
companion object {
fun newInstance(): HomePlayFragment {
val fragment = HomePlayFragment()
val bundle = Bundle()
fragment.arguments = bundle
return fragment
}
}
}

View File

@@ -32,7 +32,7 @@ class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectList
private val mFragments: ArrayList<Fragment> = ArrayList()
private val mTabInfoList: ArrayList<CharSequence> = ArrayList()
private val homeViewModel: HomeViewModel by activityViewModels()
private var currentIndex = 1
private var currentIndex = 0
companion object {
fun newInstance(): PartyFragment {
@@ -67,18 +67,18 @@ class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectList
onGetHomeTagSuccess(it)
}
}
homeViewModel.bannerLiveData.observe(this) {
homeViewModel.partyBannerLiveData.observe(this) {
BannerHelper.setBanner(mBinding.rollView, it) { _, _ ->
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner")
}
}
homeViewModel.getBannerInfo()
}
override fun onResume() {
super.onResume()
homeViewModel.getTagInfo()
homeViewModel.getPartyBanner()
}
private fun onGetHomeTagSuccess(tagInfoList: List<HomeTagInfo>) {

View File

@@ -11,11 +11,6 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.initial.InitialModel
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.avroom.adapter.RoomVPAdapter
@@ -23,16 +18,21 @@ import com.nnbc123.app.base.BaseFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRecommendBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.*
import com.nnbc123.app.home.adapter.GiftServiceAdapter
import com.nnbc123.app.home.adapter.HomeSingleAnchorAdapter
import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.utils.RVDelegate
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.auth.AuthModel
import com.nnbc123.core.home.bean.GiftServiceMsgVo
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.scwang.smartrefresh.layout.internal.ProgressDrawable
import com.yinyuan.doudou.pay.adapter.GiveSearchAdapter
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -95,6 +95,13 @@ class RecommendFragment : BaseFragment(),
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间"))
.setLayoutManager(LinearLayoutManager(mContext))
.build()
homeViewModel.bannerLiveData.observe(this) {
BannerHelper.setBanner(mBinding.rollView, it) { _, _ ->
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner")
}
}
homeViewModel.resourceLiveData.observe(this) {
if (it.isNullOrEmpty() || it.size != 3) {
mBinding.llResource.isGone = true
@@ -230,6 +237,7 @@ class RecommendFragment : BaseFragment(),
private fun loadData() {
homeViewModel.getHomeResource()
homeViewModel.getBannerInfo()
//homeViewModel.getHomeSingleAnchorList()
}

View File

@@ -47,6 +47,31 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_roll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15">
<com.nnbc123.app.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="15dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="345:80"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:rollviewpager_hint_gravity="left"
app:rollviewpager_hint_paddingBottom="8dp"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ll_resource"
android:layout_width="match_parent"

View File

@@ -75,10 +75,10 @@
android:id="@+id/msg_number"
android:layout_width="8dp"
android:layout_height="8dp"
android:background="@drawable/shape_circle_red_small"
android:background="@drawable/shape_red_ff7162_corner"
android:layout_marginStart="@dimen/dp_12"
android:gravity="center"
android:visibility="visible"
android:visibility="gone"
tools:text="123"
tools:visibility="visible" />

View File

@@ -105,6 +105,11 @@ object HomeModel : BaseModel() {
api.getHotRoom()
}
suspend fun getPlayRoom(): List<HomeRoomInfo>? =
launchRequest {
api.getPlayRoom()
}
suspend fun getHomeResource(): MutableList<ResourceInfo>? =
launchRequest {
api.getHomeResource()
@@ -269,6 +274,16 @@ object HomeModel : BaseModel() {
@GET("home/hotRoom")
suspend fun getHotRoom(): ServiceResult<List<HomeRoomInfo>>
/**
* 首页热门房间
*
* @return
*/
@GET("home/playV2")
suspend fun getPlayRoom(): ServiceResult<List<HomeRoomInfo>>
/**
* 首页资源位
*