[Modify]热门房间tab调整

This commit is contained in:
wushaocheng
2023-07-28 10:23:22 +08:00
parent 7a7a394b03
commit 10b48eeb0e
11 changed files with 322 additions and 13 deletions

View File

@@ -149,7 +149,7 @@ android {
debug {
buildConfigField "String", "BASE_URL", "\"http://beta.api.nnbc123.cn/\""
buildConfigField "String", "WEB_URL", "\"http://h5dev.yinmeng.zhongjialx.com/\""
buildConfigField "String", "WEB_URL", "\"http://beta.api.nnbc123.cn\""
buildConfigField "String", "BASE_URL_DEBUG", "BASE_URL"
buildConfigField "String", "BASE_URL_STAGING", "\"https://api.nnbc123.cn/\""
buildConfigField "String", "BASE_URL_RELEASE", "\"https://api.nnbc123.cn/\""

View File

@@ -55,7 +55,8 @@ class PrivilegeCardActivity : BaseViewBindingActivity<ActivityPrivilegeBinding>(
private fun initProtocol() {
val privilegeCardTip = getString(R.string.privilege_card_detail)
val privilegeCardDescTip = getString(R.string.Read_and_agree_to_the_privilege_card, privilegeCardTip)
val privilegeCardDescTip =
getString(R.string.Read_and_agree_to_the_privilege_card, privilegeCardTip)
val ss = SpannableString(privilegeCardDescTip)
val privilegeCardTipIndex = privilegeCardDescTip.indexOf(privilegeCardTip)
@@ -68,7 +69,10 @@ class PrivilegeCardActivity : BaseViewBindingActivity<ActivityPrivilegeBinding>(
) {
override fun onClick(widget: View) {
if (widget is TextView) widget.highlightColor =
ContextCompat.getColor(this@PrivilegeCardActivity, android.R.color.transparent)
ContextCompat.getColor(
this@PrivilegeCardActivity,
android.R.color.transparent
)
CommonWebViewActivity.start(context, UriProvider.getPrivilegeInstructions())
}
},

View File

@@ -77,6 +77,10 @@ class HomeViewModel : BaseViewModel() {
val partyRecommendRoomLiveData: LiveData<ListResult<HomeRoomInfo>> =
_partyRecommendRoomLiveData
private val _partyRecommendRoomMoreLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val partyRecommendRoomMoreLiveData: LiveData<ListResult<HomeRoomInfo>> =
_partyRecommendRoomMoreLiveData
private val _giftServiceLiveData = MutableLiveData<ListResult<GiftServiceMsgVo>>()
val giftServiceLiveData: LiveData<ListResult<GiftServiceMsgVo>> = _giftServiceLiveData
@@ -307,6 +311,18 @@ class HomeViewModel : BaseViewModel() {
)
}
fun getPartyRecommendRoomMoreList() {
safeLaunch(
onError = {
_partyRecommendRoomMoreLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getPartyRecommendRoomMoreList()
_partyRecommendRoomMoreLiveData.value = ListResult.success(result, 1)
}
)
}
fun getServiceGiftRecord() {
safeLaunch(
onError = {

View File

@@ -0,0 +1,43 @@
package com.nnbc123.app.home.adapter
import android.text.TextUtils
import android.view.View
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
class PartyHotAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_party_hot) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
helper.apply {
getView<ImageView>(R.id.iv_room_image).load(item.avatar)
setText(R.id.tv_online_number, "${item.onlineNum}")
setText(R.id.tv_room_title, item.title)
}
helper.setGone(R.id.tv_in_pk, item.isCrossPking)
helper.setGone(R.id.tv_tag_content, !TextUtils.isEmpty(item.iconContent))
.setText(R.id.tv_tag_content, item.iconContent)
val avatars: Array<ImageView> = 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),
helper.getView(R.id.iv_avatar_5)
)
for (i in avatars.indices) {
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
avatars[i].isGone = avatarUrl.isNullOrBlank()
avatars[i].load(avatarUrl)
}
}
}

View File

@@ -3,6 +3,7 @@ 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 androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
@@ -11,15 +12,17 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentPartyHotBinding
import com.nnbc123.app.databinding.FragmentRoomCommonBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.PartyHotAdapter
import com.nnbc123.app.home.adapter.RoomCommonAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class PartyRecommendFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>() {
class PartyRecommendFragment : BaseViewBindingFragment<FragmentPartyHotBinding>() {
companion object {
fun newInstance(): PartyRecommendFragment {
@@ -31,16 +34,19 @@ class PartyRecommendFragment : BaseViewBindingFragment<FragmentRoomCommonBinding
}
private lateinit var mAdapter: RoomCommonAdapter
private lateinit var mAdapter: PartyHotAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private lateinit var mMoreAdapter: RoomCommonAdapter
private lateinit var rvMoreDelegate: RVDelegate<HomeRoomInfo>
private val homeViewModel: HomeViewModel by activityViewModels()
override fun init() {
mAdapter = RoomCommonAdapter()
mAdapter = PartyHotAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setLayoutManager(GridLayoutManager(mContext, 2, GridLayoutManager.VERTICAL, false))
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无房间"))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerView)
@@ -52,13 +58,30 @@ class PartyRecommendFragment : BaseViewBindingFragment<FragmentRoomCommonBinding
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "通用tab进入房间成功")
}
}
mMoreAdapter = RoomCommonAdapter()
rvMoreDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无房间"))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerMoreView)
.build()
mMoreAdapter.setOnItemClickListener { _, _, position ->
mAdapter.getItem(position)?.let {
AVRoomActivity.start(context, it.roomUid)
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "通用tab进入房间成功")
}
}
binding.refreshLayout.setOnRefreshListener {
loadData(true)
}
homeViewModel.partyRecommendRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
homeViewModel.partyRecommendRoomMoreLiveData.observe(this) {
rvMoreDelegate.loadData(it)
}
}
override fun onResume() {
@@ -70,6 +93,7 @@ class PartyRecommendFragment : BaseViewBindingFragment<FragmentRoomCommonBinding
fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
homeViewModel.getPartyRecommendRoomList()
homeViewModel.getPartyRecommendRoomMoreList()
}
override fun onCreate(savedInstanceState: Bundle?) {

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_transparent_40" />
<corners android:radius="@dimen/dp_8" />
</shape>

View File

@@ -3,13 +3,13 @@
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#FF95BA"
android:startColor="#ffff879e"
android:endColor="#ffa8c8"
android:startColor="#ff9e9e"
android:type="linear"
android:useLevel="true" />
<corners
android:bottomLeftRadius="2dp"
android:bottomLeftRadius="3dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="2dp" />
android:topRightRadius="3dp" />
</shape>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false" />
<androidx.appcompat.widget.AppCompatTextView
android:text="更多房间"
android:textSize="@dimen/sp_16"
android:textColor="@color/color_2B2D33"
android:textStyle="bold"
android:layout_marginStart="@dimen/dp_28"
android:layout_marginTop="@dimen/dp_12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_more_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false" />
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="148dp"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_room_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_corner_radius="@dimen/dp_16" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_in_pk"
android:layout_width="44dp"
android:layout_height="16dp"
android:background="@drawable/bg_common_pk"
android:gravity="center"
android:includeFontPadding="false"
android:text="PK中"
android:textColor="#ffffffff"
android:textSize="@dimen/sp_12"
android:visibility="gone"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_6"
app:layout_constraintStart_toStartOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/iv_room_image"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_tag_content"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:background="@drawable/shape_home_room_tag"
android:gravity="center"
android:includeFontPadding="false"
android:maxLength="5"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"
tools:text="心情树洞"
tools:visibility="visible"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_6"
android:paddingStart="@dimen/dp_6"
android:paddingEnd="@dimen/dp_8"
android:paddingTop="@dimen/dp_2"
android:paddingBottom="@dimen/dp_2"
android:drawablePadding="2dp"
android:includeFontPadding="false"
android:textColor="@color/color_white"
android:textSize="@dimen/sp_11"
android:textStyle="bold"
android:background="@drawable/bg_hot"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="266"
app:drawableStartCompat="@drawable/ic_home_hot_hot" />
<LinearLayout
android:id="@+id/ll_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_2"
app:layout_constraintBottom_toTopOf="@+id/tv_room_title"
app:layout_constraintStart_toStartOf="parent">
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="22dp"
android:layout_height="22dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_5"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginStart="4dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_room_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/color_white"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_6"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
tools:text="余生点唱歌曲交友房间" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -508,7 +508,7 @@ public class UriProvider {
* 用户特权卡使用说明
*/
public static String getPrivilegeInstructions() {
return WEB_URL.concat("/yinmeng/modules/privilegeCardRule/index.html");
return WEB_URL.concat("/yinmeng/modules/rule/privilegeCardRule.html");
}
}

View File

@@ -204,6 +204,11 @@ object HomeModel : BaseModel() {
api.getPartyRecommendRoomList(uid, types)
}
suspend fun getPartyRecommendRoomMoreList(): List<HomeRoomInfo>? =
launchRequest {
api.getPartyRecommendRoomMoreList()
}
suspend fun getServiceGiftRecord(): List<GiftServiceMsgVo>? =
launchRequest {
api.getServiceGiftRecord()
@@ -449,6 +454,14 @@ object HomeModel : BaseModel() {
@Query("types") types: String
): ServiceResult<List<HomeRoomInfo>>
/**
* 首页推荐更多房间
*
* @return
*/
@GET("/home/hotRoom")
suspend fun getPartyRecommendRoomMoreList(): ServiceResult<List<HomeRoomInfo>>
/**
* 全服礼物记录
*