diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/GameRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/GameRoomFragment.kt index b7c188692..a5d45a416 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/GameRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/GameRoomFragment.kt @@ -58,7 +58,6 @@ import com.yizhuan.erban.event.OpenRoomIntroEvent import com.yizhuan.erban.friend.view.SelectFriendActivity import com.yizhuan.erban.home.adapter.RoomActAdapter import com.yizhuan.erban.home.adapter.RoomActAdapter.RoomActClickListener -import com.yizhuan.erban.treasure_box.widget.GoldBoxHelper import com.yizhuan.erban.ui.webview.DialogWebViewActivity import com.yizhuan.erban.ui.widget.ButtonItem import com.yizhuan.erban.ui.widget.GiftDialog @@ -67,12 +66,10 @@ import com.yizhuan.erban.ui.widget.GiftDialog.SenGiftCallback import com.yizhuan.erban.ui.widget.UserInfoDialog import com.yizhuan.erban.ui.widget.dialog.OpenNobleDialog import com.yizhuan.erban.ui.widget.dynamicface.DynamicFaceDialog -import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView import com.yizhuan.erban.ui.widget.rollviewpager.Util import com.yizhuan.erban.ui.widget.rollviewpager.hintview.ColorPointHintView import com.yizhuan.erban.utils.KeyBoardUtils -import com.yizhuan.erban.utils.UserUtils import com.yizhuan.tutu.room_chat.activity.RoomMsgActivity import com.yizhuan.xchat_android_core.Constants import com.yizhuan.xchat_android_core.UriProvider @@ -99,7 +96,6 @@ import com.yizhuan.xchat_android_core.room.bean.RoomInfo import com.yizhuan.xchat_android_core.room.event.RoomClearScreenEvent import com.yizhuan.xchat_android_core.room.face.FaceInfo import com.yizhuan.xchat_android_core.room.giftvalue.helper.GiftValueMrg -import com.yizhuan.xchat_android_core.room.model.AvRoomModel import com.yizhuan.xchat_android_core.room.model.MicQueueModel import com.yizhuan.xchat_android_core.room.queue.bean.MicMemberInfo import com.yizhuan.xchat_android_core.share.bean.SessionType @@ -111,7 +107,6 @@ import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil import com.yizhuan.xchat_android_core.user.UserModel import com.yizhuan.xchat_android_core.user.bean.BaseInfo import com.yizhuan.xchat_android_core.user.bean.UserInfo -import com.yizhuan.xchat_android_core.utils.LogUtils import com.yizhuan.xchat_android_library.base.factory.CreatePresenter import com.yizhuan.xchat_android_library.net.rxnet.utils.RxNetWorkUtils import com.yizhuan.xchat_android_library.rxbus.RxBus @@ -120,7 +115,6 @@ import com.yizhuan.xchat_android_library.utils.config.BasicConfig import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.functions.BiConsumer -import io.reactivex.functions.Consumer import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode diff --git a/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt b/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt index 7f5c1f1da..3cdcd49c9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt @@ -674,19 +674,6 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId: } } - fun isPlaying(): Boolean { - val dataJson = iSudFSTAPP?.getGameState(SudMGPMGState.MG_COMMON_PLAYER_PLAYING) - LogUtils.d(dataJson) - try { - val jsonObject = JSONObject(dataJson) - return jsonObject.getBoolean("isPlaying") - } catch (e: Exception) { - e.printStackTrace() - } - return false - } - - fun onStart() { iSudFSTAPP?.startMG() //启动游戏 } diff --git a/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt index f2961ab3d..0e18556cd 100644 --- a/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt +++ b/app/src/main/java/com/yizhuan/erban/home/HomeViewModel.kt @@ -19,6 +19,9 @@ class HomeViewModel : BaseViewModel() { private val _hotRoomLiveData = MutableLiveData>() val hotRoomLiveData: LiveData> = _hotRoomLiveData + private val _gameRoomLiveData = MutableLiveData>() + val gameRoomLiveData: LiveData> = _gameRoomLiveData + private val _concernsLiveData = MutableLiveData>() val concernsLiveData: LiveData> = _concernsLiveData @@ -98,6 +101,17 @@ class HomeViewModel : BaseViewModel() { ) } + fun getGameRoom(pageNum: Int, pageSize: Int) { + safeLaunch( + onError = { + _gameRoomLiveData.value = ListResult.failed(pageNum) + }, + block = { + val result = HomeModel.getGameRoom(pageNum, pageSize) + _gameRoomLiveData.value = ListResult.success(result, pageNum) + } + ) + } fun getCollectRoom(pageNum: Int, pageSize: Int) { safeLaunch( @@ -113,11 +127,21 @@ class HomeViewModel : BaseViewModel() { val collectRooms = async(Dispatchers.IO) { HomeModel.getCollectRoom(pageNum, pageSize) } - _concernsLiveData.value = concernsRooms.await() - _collectLiveData.value = - ListResult.success(collectRooms.await()?.fansRoomList, pageNum) - _emptyLiveData.value = concernsRooms.await().isNullOrEmpty() && - collectRooms.await()?.fansRoomList.isNullOrEmpty() + try { + _concernsLiveData.value = concernsRooms.await() + } catch (e: Exception) { + _concernsLiveData.value = null + } + + try { + _collectLiveData.value = + ListResult.success(collectRooms.await()?.fansRoomList, pageNum) + } catch (e: Exception) { + _collectLiveData.value = ListResult.failed(pageNum) + } + + _emptyLiveData.value = _concernsLiveData.value.isNullOrEmpty() && + _collectLiveData.value?.data.isNullOrEmpty() } else { val result = HomeModel.getCollectRoom(pageNum, pageSize) _collectLiveData.value = ListResult.success(result?.fansRoomList, pageNum) diff --git a/app/src/main/java/com/yizhuan/erban/home/adapter/RoomGameAdapter.kt b/app/src/main/java/com/yizhuan/erban/home/adapter/RoomGameAdapter.kt index c29d8d04f..8798ac218 100644 --- a/app/src/main/java/com/yizhuan/erban/home/adapter/RoomGameAdapter.kt +++ b/app/src/main/java/com/yizhuan/erban/home/adapter/RoomGameAdapter.kt @@ -1,14 +1,17 @@ package com.yizhuan.erban.home.adapter +import android.graphics.Color +import android.graphics.LinearGradient +import android.graphics.Shader import android.widget.ImageView +import android.widget.TextView +import androidx.core.view.isGone import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.yizhuan.erban.R import com.yizhuan.erban.avroom.activity.AVRoomActivity -import com.yizhuan.erban.ui.utils.ImageLoadUtilsV2 import com.yizhuan.erban.ui.utils.load import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo -import com.yizhuan.xchat_android_core.utils.TextUtils class RoomGameAdapter : BaseQuickAdapter(R.layout.item_room_game) { @@ -17,15 +20,41 @@ class RoomGameAdapter : BaseQuickAdapter(R.layout. override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) { helper.apply { getView(R.id.iv_room_image).load(item.avatar) - setText(R.id.tv_online_number, "${item.onlineNum}人热聊中") setText(R.id.tv_room_title, item.title) itemView.setOnClickListener { AVRoomActivity.start(mContext, item.uid) } + val tvRoomGame = helper.getView(R.id.tv_room_game) + tvRoomGame.text = item.mgName + helper.setText(R.id.tv_game_status, if (item.state == 1) "游戏中" else "等人中") + setGradient(tvRoomGame) } - helper.setVisible(R.id.iv_room_tag, !TextUtils.isEmptyText(item.tagPict)) - ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict) + 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) + } + + } + + private fun setGradient(textView: TextView) { + val endX = textView.paint.textSize * textView.text.length + val linearGradient = LinearGradient( + 0f, 0f, endX, 0f, + Color.parseColor("#FF61C4FE"), + Color.parseColor("#FFA979FF"), + Shader.TileMode.CLAMP + ) + textView.paint.shader = linearGradient + textView.invalidate() } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/RoomGameFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomGameFragment.kt index 94cdbe8f0..e6314b3a0 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/RoomGameFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomGameFragment.kt @@ -11,7 +11,6 @@ import com.yizhuan.erban.home.adapter.RoomGameAdapter import com.yizhuan.erban.ui.utils.RVDelegate import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo - class RoomGameFragment : BaseViewBindingFragment() { companion object { @@ -35,22 +34,38 @@ class RoomGameFragment : BaseViewBindingFragment() { .setRecyclerView(binding.recyclerView) .setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间")) .setLayoutManager(LinearLayoutManager(mContext)) + .setRefreshLayout(binding.refreshLayout) .setPageSize(pageSize) .build() + roomHotAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView) - homeViewModel.hotRoomLiveData.observe(this) { + binding.refreshLayout.setOnRefreshListener { + loadData(true) + } + homeViewModel.gameRoomLiveData.observe(this) { rvDelegate.loadData(it) } + + binding.tvMatch.setOnClickListener { + + } + } + + override fun onResume() { + super.onResume() loadData(true) } private fun loadData(isRefresh: Boolean) { + + binding.refreshLayout.isRefreshing = isRefresh + if (isRefresh) { page = 1 } else { page++ } - homeViewModel.getHotRoom(page, pageSize) + homeViewModel.getGameRoom(page, pageSize) } } \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/bg_home_common_avatar.png b/app/src/main/res/drawable-xhdpi/bg_home_common_avatar.png index b9612e2eb..be9ae269a 100644 Binary files a/app/src/main/res/drawable-xhdpi/bg_home_common_avatar.png and b/app/src/main/res/drawable-xhdpi/bg_home_common_avatar.png differ diff --git a/app/src/main/res/drawable-xhdpi/bg_home_game_item.png b/app/src/main/res/drawable-xhdpi/bg_home_game_item.png new file mode 100644 index 000000000..a87b0caee Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/bg_home_game_item.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_home_game_go_room.png b/app/src/main/res/drawable-xhdpi/ic_home_game_go_room.png new file mode 100644 index 000000000..e85ac84d7 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_home_game_go_room.png differ diff --git a/app/src/main/res/layout/activity_user_info.xml b/app/src/main/res/layout/activity_user_info.xml index 253083cc5..8c7b19b52 100644 --- a/app/src/main/res/layout/activity_user_info.xml +++ b/app/src/main/res/layout/activity_user_info.xml @@ -113,7 +113,7 @@ tools:src="@drawable/ic_user_charm_level" /> - diff --git a/app/src/main/res/layout/dialog_user_info.xml b/app/src/main/res/layout/dialog_user_info.xml index 5c7542361..640bac9ac 100644 --- a/app/src/main/res/layout/dialog_user_info.xml +++ b/app/src/main/res/layout/dialog_user_info.xml @@ -129,11 +129,10 @@ diff --git a/app/src/main/res/layout/fragment_room_game.xml b/app/src/main/res/layout/fragment_room_game.xml index 3d7ae06d1..5616787a5 100644 --- a/app/src/main/res/layout/fragment_room_game.xml +++ b/app/src/main/res/layout/fragment_room_game.xml @@ -1,9 +1,43 @@ - + android:layout_height="match_parent"> + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_home_hall_left.xml b/app/src/main/res/layout/item_home_hall_left.xml index b499574d4..d51ddd1f1 100644 --- a/app/src/main/res/layout/item_home_hall_left.xml +++ b/app/src/main/res/layout/item_home_hall_left.xml @@ -72,11 +72,10 @@ diff --git a/app/src/main/res/layout/item_home_hall_right.xml b/app/src/main/res/layout/item_home_hall_right.xml index 067b69617..d1eb69a42 100644 --- a/app/src/main/res/layout/item_home_hall_right.xml +++ b/app/src/main/res/layout/item_home_hall_right.xml @@ -67,15 +67,13 @@ - @@ -23,6 +22,7 @@ android:layout_width="74dp" android:layout_height="74dp" android:layout_marginStart="3dp" + android:layout_marginTop="8dp" android:src="@drawable/default_cover" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -60,108 +60,122 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:ellipsize="end" + android:includeFontPadding="false" android:maxLines="1" android:textColor="@color/text_primary" - android:textSize="14sp" + android:textSize="14dp" android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@id/iv_room_tag" + app:layout_constraintBottom_toTopOf="@id/tv_room_game" app:layout_constraintStart_toEndOf="@id/view_room_cover" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed" tools:text="余生点唱歌曲交友房间" /> - + tools:text="你画我猜" /> + + + - - + android:textColor="@color/color_999999" + android:textSize="10sp" + app:layout_constraintBottom_toBottomOf="@id/tv_room_game" + app:layout_constraintStart_toEndOf="@id/view_line" + app:layout_constraintTop_toTopOf="@id/tv_room_game" + tools:text="游戏中" /> + app:layout_constraintStart_toStartOf="@id/tv_room_title" + app:layout_constraintTop_toBottomOf="@id/tv_room_game"> + app:cborder_width="2dp" /> - - + app:cborder_width="2dp" /> + + + app:cborder_width="2dp" /> + app:cborder_width="2dp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_user.xml b/app/src/main/res/layout/item_user.xml index 5aa99abfd..4f46f320d 100644 --- a/app/src/main/res/layout/item_user.xml +++ b/app/src/main/res/layout/item_user.xml @@ -56,15 +56,13 @@ - - diff --git a/app/src/module_community/res/layout/layout_dy_nick_detail.xml b/app/src/module_community/res/layout/layout_dy_nick_detail.xml index 8cf8de3d2..9c379bebf 100644 --- a/app/src/module_community/res/layout/layout_dy_nick_detail.xml +++ b/app/src/module_community/res/layout/layout_dy_nick_detail.xml @@ -103,11 +103,10 @@ diff --git a/app/src/module_public_chat_hall/res/layout/item_message_public_chat_hall.xml b/app/src/module_public_chat_hall/res/layout/item_message_public_chat_hall.xml index d989cb67d..6222d02ab 100644 --- a/app/src/module_public_chat_hall/res/layout/item_message_public_chat_hall.xml +++ b/app/src/module_public_chat_hall/res/layout/item_message_public_chat_hall.xml @@ -67,11 +67,10 @@ diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java index 93799fc1e..79c46b11d 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/bean/HomeRoomInfo.java @@ -30,6 +30,9 @@ public class HomeRoomInfo implements MultiItemEntity { private boolean crossPking; private boolean valid; private boolean isBanner; + private long mgId; + private String mgName; + public int state; @Override public int getItemType() { diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt index 63eb02f09..1a099b06e 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt @@ -129,6 +129,12 @@ object HomeModel : BaseModel() { api.getCommonRoom(tabId, pageNum, pageSize) } + suspend fun getGameRoom(pageNum: Int, pageSize: Int): List? = + launchRequest { + api.getGameRoom(pageNum, pageSize) + } + + suspend fun getHomeTag(): List? = launchRequest { @@ -251,6 +257,17 @@ object HomeModel : BaseModel() { @Query("pageSize") pageSize: Int ): ServiceResult> + /** + * 首页游戏房间 + * + * @return + */ + @GET("home/miniGameTabList") + suspend fun getGameRoom( + @Query("pageNum") pageNum: Int, + @Query("pageSize") pageSize: Int + ): ServiceResult> + /** * 首页派对 Tag List *