diff --git a/app/src/main/java/com/yizhuan/erban/avroom/adapter/CreateRoomGameGuideAdapter.kt b/app/src/main/java/com/yizhuan/erban/avroom/adapter/CreateRoomGameGuideAdapter.kt new file mode 100644 index 000000000..9c3fdb310 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/adapter/CreateRoomGameGuideAdapter.kt @@ -0,0 +1,17 @@ +package com.yizhuan.erban.avroom.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R +import com.yizhuan.erban.common.glide.GlideUtils +import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2 +import com.yizhuan.xchat_android_core.room.game.GameInfo + +class CreateRoomGameGuideAdapter : + BaseQuickAdapter(R.layout.item_room_create_game_guide) { + + override fun convert(helper: BaseViewHolder, item: GameInfo) { + GlideUtils.instance().load(item.pic,R.drawable.default_cover,helper.getView(R.id.iv_cover)) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/avroom/dialog/CreateGameRoomDialog.kt b/app/src/main/java/com/yizhuan/erban/avroom/dialog/CreateGameRoomDialog.kt new file mode 100644 index 000000000..f84c9bf07 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/dialog/CreateGameRoomDialog.kt @@ -0,0 +1,66 @@ +package com.yizhuan.erban.avroom.dialog + +import android.annotation.SuppressLint +import android.view.Gravity +import android.view.WindowManager +import androidx.core.view.isInvisible +import androidx.core.view.isVisible +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.adapter.CreateRoomGameAdapter +import com.yizhuan.erban.avroom.adapter.CreateRoomGameGuideAdapter +import com.yizhuan.erban.base.BaseActivity +import com.yizhuan.erban.base.BaseDialog +import com.yizhuan.erban.databinding.DialogCreateGameRoomBinding +import com.yizhuan.erban.databinding.DialogCreateRoomBinding +import com.yizhuan.erban.home.helper.OpenRoomHelper +import com.yizhuan.erban.ui.utils.RVDelegate +import com.yizhuan.xchat_android_core.room.bean.RoomInfo +import com.yizhuan.xchat_android_core.room.game.GameInfo +import com.yizhuan.xchat_android_core.room.game.GameModel +import com.yizhuan.xchat_android_core.utils.toast +import com.yizhuan.xchat_android_library.utils.ResUtil + +class CreateGameRoomDialog : BaseDialog() { + + private lateinit var rvDelegate: RVDelegate + private val gameAdapter = CreateRoomGameGuideAdapter() + + override var width = WindowManager.LayoutParams.MATCH_PARENT + override var gravity = Gravity.BOTTOM + + @SuppressLint("CheckResult") + override fun init() { + + binding.rvGame.itemAnimator = null + rvDelegate = RVDelegate.Builder() + .setAdapter(gameAdapter) + .setRecyclerView(binding.rvGame) + .setLayoutManager(GridLayoutManager(context, 2)) + .build() + + gameAdapter.setOnItemClickListener { _, _, position -> + dismissAllowingStateLoss() + OpenRoomHelper.openRoom( + requireActivity() as BaseActivity, RoomInfo.ROOMTYPE_GAME, + gameAdapter.data[position].mgId.toLong() + ) + } + + binding.ivClose.setOnClickListener { + dismissAllowingStateLoss() + } + + GameModel.getGameList() + .compose(bindToLifecycle()) + .subscribe( + { + rvDelegate.setNewData(it) + }, { + rvDelegate.loadErr(true) + } + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java index b12174576..480faaa55 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java @@ -16,6 +16,7 @@ import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent; import com.yizhuan.xchat_android_core.home.model.GameHomeModel; import com.yizhuan.xchat_android_core.statistic.StatisticManager; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; +import com.yizhuan.xchat_android_core.utils.Logger; import com.yizhuan.xchat_android_core.utils.net.RxHelper; import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.ResUtil; diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt index 113380354..e8e651663 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/RecommendFragment.kt @@ -2,25 +2,24 @@ package com.yizhuan.erban.home.fragment import android.os.Bundle import android.view.View -import androidx.databinding.DataBindingUtil import androidx.fragment.app.activityViewModels import com.chad.library.adapter.base.BaseQuickAdapter import com.yizhuan.erban.R import com.yizhuan.erban.avroom.activity.AVRoomActivity +import com.yizhuan.erban.avroom.dialog.CreateGameRoomDialog import com.yizhuan.erban.base.BaseActivity -import com.yizhuan.erban.base.BaseFragment +import com.yizhuan.erban.base.BaseViewBindingFragment import com.yizhuan.erban.databinding.FragmentRecommendBinding import com.yizhuan.erban.home.HomeViewModel import com.yizhuan.erban.home.adapter.HomeChatAdapter import com.yizhuan.erban.home.adapter.HomeHotAdapter -import com.yizhuan.erban.home.dialog.RecommendRoomDialog import com.yizhuan.erban.home.helper.BannerHelper import com.yizhuan.erban.home.helper.OpenRoomHelper -import com.yizhuan.xchat_android_core.auth.AuthModel import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent import com.yizhuan.xchat_android_core.statistic.StatisticManager import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol +import com.yizhuan.xchat_android_core.user.UserModel import com.yizhuan.xchat_android_library.utils.ResUtil import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -29,17 +28,12 @@ import org.greenrobot.eventbus.ThreadMode /** * Peko首页 */ -class RecommendFragment : BaseFragment() { - private lateinit var mBinding: FragmentRecommendBinding +class RecommendFragment : BaseViewBindingFragment() { private lateinit var charAdapter: HomeChatAdapter private lateinit var roomHotAdapter: HomeHotAdapter private val homeViewModel: HomeViewModel by activityViewModels() - //仅埋点使用,不影响业务逻辑 - private val abcArray = arrayOf("A", "B", "C") - private var currMatchClick = abcArray[0] - companion object { fun newInstance(): RecommendFragment { val args = Bundle() @@ -49,20 +43,7 @@ class RecommendFragment : BaseFragment() { } } - override fun getRootLayoutId(): Int { - return R.layout.fragment_recommend - } - - override fun onFindViews() { - mBinding = DataBindingUtil.bind(mView)!! - } - - override fun onResume() { - super.onResume() - loadData() - } - - override fun initiate() { + override fun init() { initRefreshView() initChatTab() initHotRoomTab() @@ -73,7 +54,7 @@ class RecommendFragment : BaseFragment() { .commitAllowingStateLoss() homeViewModel.bannerLiveData.observe(this) { - BannerHelper.setBanner(mBinding.rollView, it) { _, _ -> + BannerHelper.setBanner(binding.rollView, it) { _, _ -> StatisticManager.Instance() .onEvent( StatisticsProtocol.EVENT_HOME_BANNER_CLICK, @@ -82,31 +63,24 @@ class RecommendFragment : BaseFragment() { } } - homeViewModel.resourceJumpLiveData.observe(this) { - dialogManager.dismissDialog() - it?.let { - if (it.isPick) { - AVRoomActivity.start(context, it.uid) - StatisticManager.Instance().onEvent( - "${currMatchClick}_match_success", - ResUtil.getString(R.string.home_fragment_recommendfragment_03), - mapOf("user_id" to AuthModel.get().currentUid.toString()) - ) - } else { - RecommendRoomDialog.newInstance(it).show(context) - } - } + val userInfo = UserModel.get().cacheLoginUserInfo + if ((userInfo?.hallId ?: 0L) > 0L) { + binding.ivGameGuide.visibility = View.GONE + } else { + binding.ivGameGuide.visibility = View.VISIBLE + } + binding.ivGameGuide.setOnClickListener { + CreateGameRoomDialog().show(context) } - } private fun initRefreshView() { - mBinding.refreshLayout.setOnRefreshListener { - mBinding.refreshLayout.finishRefresh() + binding.refreshLayout.setOnRefreshListener { + binding.refreshLayout.finishRefresh() EventBus.getDefault().post(RefreshHomeDataEvent()) } - mBinding.refreshLayout.isEnableLoadmore = false - mBinding.refreshLayout.isEnableOverScrollBounce = false + binding.refreshLayout.isEnableLoadmore = false + binding.refreshLayout.isEnableOverScrollBounce = false } private fun initChatTab() { @@ -126,19 +100,19 @@ class RecommendFragment : BaseFragment() { ) } } - mBinding.mRecyclerChat.adapter = charAdapter - mBinding.mLiCreateRoom.setOnClickListener { + binding.mRecyclerChat.adapter = charAdapter + binding.mLiCreateRoom.setOnClickListener { OpenRoomHelper.openRoom(context as BaseActivity?) } homeViewModel.homePlayInfoData.observe(this) { it?.let { if (it.isNotEmpty()) { - mBinding.mLiCreateRoom.visibility = View.GONE - mBinding.mRecyclerChat.visibility = View.VISIBLE + binding.mLiCreateRoom.visibility = View.GONE + binding.mRecyclerChat.visibility = View.VISIBLE charAdapter.setNewData(it) } else { - mBinding.mLiCreateRoom.visibility = View.VISIBLE - mBinding.mRecyclerChat.visibility = View.GONE + binding.mLiCreateRoom.visibility = View.VISIBLE + binding.mRecyclerChat.visibility = View.GONE } } } @@ -158,7 +132,7 @@ class RecommendFragment : BaseFragment() { ) } } - mBinding.mRecyclerRoom.adapter = roomHotAdapter + binding.mRecyclerRoom.adapter = roomHotAdapter homeViewModel.homeHotRoomLiveData.observe(this) { it?.let { roomHotAdapter.setNewData(it) @@ -166,6 +140,17 @@ class RecommendFragment : BaseFragment() { } } + override fun onResume() { + super.onResume() + loadData() + } + + private fun loadData() { + homeViewModel.getBannerInfo() + homeViewModel.getHomePlayV2() + homeViewModel.getHotRoom() + } + @Subscribe(threadMode = ThreadMode.MAIN) fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) { if (isResumed) { @@ -173,15 +158,6 @@ class RecommendFragment : BaseFragment() { } } - private fun loadData() { - homeViewModel.getBannerInfo() - homeViewModel.getHomeResource() - homeViewModel.getHomeSingleAnchorList() - homeViewModel.getHomePlayV2() - homeViewModel.getHotRoom() - } - - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) EventBus.getDefault().register(this) @@ -192,5 +168,4 @@ class RecommendFragment : BaseFragment() { EventBus.getDefault().unregister(this) } - } \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/ic_game_room_create_close.webp b/app/src/main/res/drawable-xhdpi/ic_game_room_create_close.webp new file mode 100644 index 000000000..b88ab4a92 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_game_room_create_close.webp differ diff --git a/app/src/main/res/drawable/ic_game_guide.webp b/app/src/main/res/drawable/ic_game_guide.webp new file mode 100644 index 000000000..b56fa2c13 Binary files /dev/null and b/app/src/main/res/drawable/ic_game_guide.webp differ diff --git a/app/src/main/res/drawable/shape_white_bottom_25dp.xml b/app/src/main/res/drawable/shape_white_bottom_25dp.xml new file mode 100644 index 000000000..bfa04d47b --- /dev/null +++ b/app/src/main/res/drawable/shape_white_bottom_25dp.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_create_game_room.xml b/app/src/main/res/layout/dialog_create_game_room.xml new file mode 100644 index 000000000..b4d5bd0bf --- /dev/null +++ b/app/src/main/res/layout/dialog_create_game_room.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_recommend.xml b/app/src/main/res/layout/fragment_recommend.xml index edb3690cb..18f314d67 100644 --- a/app/src/main/res/layout/fragment_recommend.xml +++ b/app/src/main/res/layout/fragment_recommend.xml @@ -60,46 +60,64 @@ android:textStyle="bold" /> + android:layout_marginTop="@dimen/dp_12" + android:layout_marginEnd="@dimen/dp_10" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + + + + + + + + + - - + android:id="@+id/ivGameGuide" + android:src="@drawable/ic_game_guide" + android:visibility="gone" + android:layout_width="120dp" + android:layout_height="75dp"/> - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 099df2029..da39a6f2e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4975,5 +4975,6 @@ 未綁定提現賬戶 剩餘周提現次數:%d次 立即提現 + 選擇游戲 \ No newline at end of file