feat:完善首页数据对接(首页排行榜、我的房间、房间标签列表)

feat:删除部分无用代码
This commit is contained in:
max
2024-06-18 18:14:35 +08:00
parent 9d14936d9c
commit 14fa576814
30 changed files with 349 additions and 1728 deletions

Binary file not shown.

View File

@@ -2,21 +2,44 @@ package com.chwl.app.home
import androidx.lifecycle.MutableLiveData
import com.chwl.app.base.BaseViewModel
import com.chwl.core.auth.AuthModel
import com.chwl.core.room.bean.RoomInfo
import com.chwl.core.room.model.AvRoomModel
import com.chwl.core.bean.response.ListResult
import com.chwl.core.home.bean.HomeRoomCardInfo
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.model.HomeModel
class HomeMeViewModel : BaseViewModel() {
val roomInfoLiveData = MutableLiveData<RoomInfo>()
val roomInfoLiveData = MutableLiveData<HomeRoomCardInfo>()
val historyRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
val collectRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
fun getMyRoomInfo() {
addDisposable(
AvRoomModel.get().requestRoomInfo(AuthModel.get().currentUid.toString())
.subscribe({
roomInfoLiveData.postValue(it)
}, {
})
safeLaunch {
roomInfoLiveData.postValue(HomeModel.getMyRoomInfo())
}
}
fun getHomeHistoryList(pageNum: Int) {
safeLaunch(
onError = {
historyRoomListLiveData.value = ListResult.failed(pageNum)
},
block = {
val result = HomeModel.getHomeHistoryRoomList(pageNum, 20)
historyRoomListLiveData.value = ListResult.success(result, pageNum)
}
)
}
fun getHomeCollectList(pageNum: Int) {
safeLaunch(
onError = {
collectRoomListLiveData.value = ListResult.failed(pageNum)
},
block = {
val result = HomeModel.getHomeMyCollectRoomList(pageNum, 20)
collectRoomListLiveData.value = ListResult.success(result, pageNum)
}
)
}
}

View File

@@ -1,73 +1,40 @@
package com.chwl.app.home
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.chwl.app.base.BaseViewModel
import com.chwl.core.bean.response.ListResult
import com.chwl.core.home.bean.*
import com.chwl.core.home.model.HomeModel
import com.chwl.core.room.bean.AnchorInfo
import com.chwl.core.user.bean.UserInfo
import com.chwl.core.utils.extension.toast
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.flow.MutableSharedFlow
class HomeViewModel : BaseViewModel() {
private val _tabHomeLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
val tabHomeLiveData: MutableLiveData<ListResult<HomeRoomInfo>?> = _tabHomeLiveData
private val _bannerLiveData = MutableLiveData<List<BannerInfo>?>()
val bannerLiveData: MutableLiveData<List<BannerInfo>?> = _bannerLiveData
val tabRoomListLiveData = MutableLiveData<ListResult<HomeRoomInfo>?>()
val bannerLiveData = MutableLiveData<List<BannerInfo>?>()
private val _currentResourceLiveData = MutableLiveData<List<CurrentResourceInfo>?>()
val currentResourceLiveData: MutableLiveData<List<CurrentResourceInfo>?> = _currentResourceLiveData
val homeResourceLiveData = MutableLiveData<List<CurrentResourceInfo>?>()
private val _resourceJumpLiveData = MutableLiveData<HomeRoomInfo?>()
val resourceJumpLiveData: LiveData<HomeRoomInfo?> = _resourceJumpLiveData
val resourceJumpFlow = MutableSharedFlow<HomeRoomInfo?>()
// private val _homeChatPickLiveData = MutableLiveData<String?>()
// val homeChatPickLiveData: LiveData<String?> = _homeChatPickLiveData
val pickRoomLiveData = MutableLiveData<HomeRoomInfo?>()
private val _gameRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val gameRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _gameRoomLiveData
val openGameRoomLiveData = MutableLiveData<Long?>()
private val _pickRoomLiveData = MutableLiveData<HomeRoomInfo?>()
val pickRoomLiveData: MutableLiveData<HomeRoomInfo?> = _pickRoomLiveData
val anchorInfoLiveData = MutableLiveData<AnchorInfo?>()
private val _openGameRoomLiveData = MutableLiveData<Long?>()
val openGameRoomLiveData: MutableLiveData<Long?> = _openGameRoomLiveData
val homeTabLiveData: MutableLiveData<List<HomeTagInfo>> = MutableLiveData<List<HomeTagInfo>>()
private val _concernsLiveData = MutableLiveData<List<HomeRoomInfo>>()
val concernsLiveData: LiveData<List<HomeRoomInfo>> = _concernsLiveData
private val _collectLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val collectLiveData: LiveData<ListResult<HomeRoomInfo>> = _collectLiveData
private val _emptyLiveData = MutableLiveData<Boolean>()
val emptyLiveData: LiveData<Boolean> = _emptyLiveData
private val _anchorInfoLiveData = MutableLiveData<AnchorInfo?>()
val anchorInfoLiveData: MutableLiveData<AnchorInfo?> = _anchorInfoLiveData
private val _homePlayInfoLiveData = MutableLiveData<List<HomeRoomInfo>?>()
val homePlayInfoData: MutableLiveData<List<HomeRoomInfo>?> = _homePlayInfoLiveData
private val _homeHotRoomLiveData = MutableLiveData<ListResult<HomeRoomInfo>>()
val homeHotRoomLiveData: LiveData<ListResult<HomeRoomInfo>> = _homeHotRoomLiveData
private val _newFriendLiveData = MutableLiveData<ListResult<UserInfo>>()
val newFriendLiveData: LiveData<ListResult<UserInfo>> = _newFriendLiveData
val homeTagLiveData: MutableLiveData<List<HomeTagInfo>> = MutableLiveData<List<HomeTagInfo>>()
fun getHomeTabName(tabId: Int, pageNum: Int) {
val homeRankListLiveData = MutableLiveData<List<List<HomeRankBean>>>()
fun getTabRoomList(tabId: Int, pageNum: Int) {
safeLaunch(
onError = {
_tabHomeLiveData.value = ListResult.failed(pageNum)
tabRoomListLiveData.value = ListResult.failed(pageNum)
},
block = {
val result = HomeModel.getHomeTabHome(tabId, pageNum, 20)
_tabHomeLiveData.value = ListResult.success(result, pageNum)
tabRoomListLiveData.value = ListResult.success(result, pageNum)
}
)
}
@@ -75,13 +42,13 @@ class HomeViewModel : BaseViewModel() {
/**
* 首页改版资源位
*/
fun getCurrentResourceInfo() {
fun getHomeResourceInfo() {
safeLaunch(
onError = {
_currentResourceLiveData.value = null
homeResourceLiveData.value = null
},
block = {
_currentResourceLiveData.value = HomeModel.getCurrentResource()
homeResourceLiveData.value = HomeModel.getCurrentResource()
}
)
}
@@ -89,160 +56,35 @@ class HomeViewModel : BaseViewModel() {
fun getResourceJumpInfo(id: Int) {
safeLaunch(
onError = {
_resourceJumpLiveData.value = null
resourceJumpFlow.emit(null)
it.message.toast()
},
block = {
_resourceJumpLiveData.value = HomeModel.getResourceJumpInfo(id)
resourceJumpFlow.emit(HomeModel.getResourceJumpInfo(id))
}
)
}
//
// fun getHomeChatPick() {
// safeLaunch(
// onError = {
// _homeChatPickLiveData.value = null
// it.message.toast()
// },
// block = {
// _homeChatPickLiveData.value = HomeModel.getHomeChatPick()
// }
// )
// }
fun getBannerInfo() {
safeLaunch(
onError = {
_bannerLiveData.value = null
bannerLiveData.value = null
},
block = {
_bannerLiveData.value = HomeModel.getHomeBanner("1")
bannerLiveData.value = HomeModel.getHomeBanner("1")
}
)
}
fun getGameRoom(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
it.message.toast()
_gameRoomLiveData.value = ListResult.failed(pageNum)
},
block = {
val result = HomeModel.getGameRoom(pageNum, pageSize)
_gameRoomLiveData.value = ListResult.success(result, pageNum)
}
)
}
fun fastPickGameRoom(mgId: Long? = null) {
safeLaunch(
onError = {
it.message.toast()
},
block = {
val homeRoomInfo = HomeModel.fastPickGameRoom(mgId)
if (homeRoomInfo?.isPick == true) {
_pickRoomLiveData.value = homeRoomInfo
} else if (homeRoomInfo?.isNeedOpenSelfRoom == true) {
_openGameRoomLiveData.value = mgId
}
}
)
}
fun getCollectRoom(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
_collectLiveData.value = ListResult.failed(pageNum)
_emptyLiveData.value = true
},
block = {
if (pageNum == 1) {
val concernsRooms = async(Dispatchers.IO) {
try {
HomeModel.getConcernsRoom()
} catch (e: Throwable) {
null
}
}
val collectRooms = async(Dispatchers.IO) {
try {
HomeModel.getCollectRoom(pageNum, pageSize)
} catch (e: Throwable) {
null
}
}
val data = concernsRooms.await()
data?.let { _concernsLiveData.value = it }
val collectList = collectRooms.await()
if (collectList == null) {
_collectLiveData.value = ListResult.failed(pageNum)
} else {
_collectLiveData.value =
ListResult.success(collectList.fansRoomList, pageNum)
}
_emptyLiveData.value = _concernsLiveData.value.isNullOrEmpty() &&
_collectLiveData.value?.data.isNullOrEmpty()
} else {
val result = HomeModel.getCollectRoom(pageNum, pageSize)
_collectLiveData.value = ListResult.success(result?.fansRoomList, pageNum)
}
}
)
}
fun requestAnchorInfo() {
safeLaunch(
onError = {
_anchorInfoLiveData.value = null
},
block = {
_anchorInfoLiveData.value = HomeModel.requestAnchorInfo()
}
)
}
fun getHomePlayV2() {
safeLaunch(
onError = {
_homePlayInfoLiveData.value = null
},
block = {
_homePlayInfoLiveData.value = HomeModel.getHomePlayV2()
}
)
}
fun getHotRoom() {
safeLaunch(
onError = {
_homeHotRoomLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getHotRoom()
_homeHotRoomLiveData.value = ListResult.success(result, 1)
}
)
}
fun getNewFriendList(gender: Int? = null) {
safeLaunch(
onError = {
_newFriendLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getNewFriendList(gender)
_newFriendLiveData.value = ListResult.success(result, 1)
}
)
}
fun getHomeTagInfo() {
fun getHomeTabInfo() {
safeLaunch {
homeTagLiveData.value = HomeModel.getNewHomeTag()
homeTabLiveData.value = HomeModel.getNewHomeTab()
}
}
fun getHomeRankList() {
safeLaunch {
homeRankListLiveData.value = HomeModel.getHomeRankList()
}
}
}

View File

@@ -1,89 +0,0 @@
package com.chwl.app.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.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.makeramen.roundedimageview.RoundedImageView
import com.chwl.app.R
import com.chwl.app.home.helper.BannerHelper
import com.chwl.app.ui.utils.ImageLoadUtilsV2
import com.chwl.app.ui.utils.load
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.CoreTextUtils
import com.chwl.core.utils.extension.ifNullOrEmpty
import com.chwl.library.utils.ResUtil
/**
* create by lvzebiao @2019/11/13
*/
class HomePlayAdapter : BaseMultiItemQuickAdapter<HomeRoomInfo, BaseViewHolder>(null) {
init {
addItemType(HomeRoomInfo.TYPE_ROOM, R.layout.item_home_play)
addItemType(HomeRoomInfo.TYPE_BANNER, R.layout.item_room_banner)
addItemType(HomeRoomInfo.TYPE_BROADCAST, R.layout.item_home_play_broadcast)
}
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
if (item.itemType == HomeRoomInfo.TYPE_ROOM ||
item.itemType == HomeRoomInfo.TYPE_BROADCAST
) {
helper.setText(R.id.tv_room_title, item.title)
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict)
helper.setText(R.id.tv_online_number, "${item.onlineNum}")
val tvMgName = helper.getView<TextView>(R.id.tv_mg_name)
tvMgName.text = item.mgName.ifNullOrEmpty { ResUtil.getString(R.string.home_adapter_homeplayadapter_01) }
if (item.mgName.isNullOrEmpty()) {
setGradient(tvMgName, "#FF8C5FFF", "#FFFF969B")
} else {
setGradient(tvMgName, "#FF61C4FE", "#FFA979FF")
}
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)
)
for (i in avatars.indices) {
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
avatars[i].isGone = avatarUrl.isNullOrBlank()
avatars[i].load(avatarUrl)
}
val ivRoomImage = helper.getView<RoundedImageView>(R.id.iv_room_image)
ImageLoadUtilsV2.loadAvatar(ivRoomImage, item.avatar)
ivRoomImage.borderColor =
Color.parseColor(if (item.gender == 1) "#CCD7FF" else "#FFD0D0")
if (item.itemType == HomeRoomInfo.TYPE_BROADCAST) {
helper.setText(R.id.tv_broad_msg, item.broadMsg)
} else {
helper.setBackgroundRes(
R.id.view_bg,
if (item.gender == 1) R.drawable.bg_home_play_item_man else R.drawable.bg_home_play_item_woman
)
}
} else {
BannerHelper.setBanner(helper.getView(R.id.roll_view), item.bannerVoList)
}
}
private fun setGradient(textView: TextView, startColor: String, endColor: String) {
val endX = textView.paint.textSize * textView.text.length
val linearGradient = LinearGradient(
0f, 0f, endX, 0f,
Color.parseColor(startColor),
Color.parseColor(endColor),
Shader.TileMode.CLAMP
)
textView.paint.shader = linearGradient
textView.invalidate()
}
}

View File

@@ -4,13 +4,17 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import androidx.core.view.isVisible
import com.chwl.app.R
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.core.home.bean.HomeRankBean
class HomeRankViewFlipperAdapter : BaseAdapter() {
private val list = ArrayList<List<String>>()
private val list = ArrayList<List<HomeRankBean>>()
fun setNewData(newList: List<List<String>>) {
fun setNewData(newList: List<List<HomeRankBean>>) {
list.clear()
list.addAll(newList)
notifyDataSetChanged()
@@ -20,8 +24,8 @@ class HomeRankViewFlipperAdapter : BaseAdapter() {
return list.size
}
override fun getItem(position: Int): Any {
return list.get(position)
override fun getItem(position: Int): List<HomeRankBean>? {
return list.getOrNull(position)
}
override fun getItemId(position: Int): Long {
@@ -31,7 +35,27 @@ class HomeRankViewFlipperAdapter : BaseAdapter() {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(parent.context)
.inflate(R.layout.home_recommend_item_rank, parent, false)
val rankView1 = view.findViewById<ImageView>(R.id.iv_rank_1)
val rankView2 = view.findViewById<ImageView>(R.id.iv_rank_2)
val rankView3 = view.findViewById<ImageView>(R.id.iv_rank_3)
val rankBorderView1 = view.findViewById<ImageView>(R.id.iv_rank_border_1)
val rankBorderView2 = view.findViewById<ImageView>(R.id.iv_rank_border_2)
val rankBorderView3 = view.findViewById<ImageView>(R.id.iv_rank_border_3)
val list = getItem(position)
loadRankData(rankView1, rankBorderView1, list?.get(0))
loadRankData(rankView2, rankBorderView2, list?.get(1))
loadRankData(rankView3, rankBorderView3, list?.get(2))
return view
}
private fun loadRankData(view: ImageView, borderView: View, data: HomeRankBean?) {
if (data == null) {
view.isVisible = false
borderView.isVisible = false
} else {
view.isVisible = true
borderView.isVisible = true
view.loadAvatar(data.avatar)
}
}
}

View File

@@ -9,13 +9,16 @@ import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.utils.loadFromAssets
import com.chwl.core.home.bean.HomeRoomInfo
import com.opensource.svgaplayer.SVGADrawable
import com.opensource.svgaplayer.SVGAImageView
/**
* create by lvzebiao @2019/11/13
*/
class HomeHotAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_recommend) {
class HomeRoomAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.home_item_room) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
helper.apply {
@@ -55,5 +58,16 @@ class HomeHotAdapter :
ImageLoadUtils.loadImage(tagView, tagPict)
tagView.isVisible = true
}
val pkView = helper.getView<SVGAImageView>(R.id.svga_pk)
if (item.isCrossPking) {
pkView.isVisible = true
if (pkView.drawable !is SVGADrawable) {
pkView.loadFromAssets("svga/home_pk.svga")
}
pkView.startAnimation()
} else {
pkView.isVisible = false
pkView.stopAnimation()
}
}
}

View File

@@ -1,56 +0,0 @@
package com.chwl.app.home.adapter
import android.widget.ImageView
import androidx.core.view.isGone
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.opensource.svgaplayer.SVGAImageView
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.ui.utils.ImageLoadUtilsV2
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.utils.loadFromAssets
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.CoreTextUtils
/**
* create by lvzebiao @2019/11/13
*/
class HomeSingleAnchorAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_home_single_anchor) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
helper.setText(R.id.tv_nickname, if (!CoreTextUtils.isEmptyText(item.nick)) item.nick else "")
helper.setText(
R.id.tv_room_name,
if (!CoreTextUtils.isEmptyText(item.title)) item.title else ""
)
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_avatar), item.avatar)
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_avatar_big), item.avatar, false, 8)
val ivPking = helper.getView<SVGAImageView>(R.id.iv_pking)
val ivTag = helper.getView<ImageView>(R.id.iv_tag)
ivPking.isVisible = item.isCrossPking
ivTag.isGone = item.isCrossPking
if (item.isCrossPking) {
ivPking.loadFromAssets("svga/single_room_pking.svga")
} else {
ivTag.load(item.tagPict)
}
helper.setImageResource(
R.id.iv_gender,
if (item.gender == 1) R.drawable.ic_gender_male else R.drawable.ic_gender_female
)
helper.setText(
R.id.tv_topic,
if (!CoreTextUtils.isEmptyText(item.roomDesc)) item.roomDesc else ""
)
helper.itemView.setOnClickListener {
AVRoomActivity.startForFromType(
mContext,
item.uid,
AVRoomActivity.FROM_TYPE_RECOMMEND
)
}
}
}

View File

@@ -1,47 +0,0 @@
package com.chwl.app.home.adapter
import android.widget.ImageView
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.opensource.svgaplayer.SVGAImageView
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.utils.loadFromAssets
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.CoreTextUtils
/**
* create by lvzebiao @2019/11/13
* 人气主播更多
*/
class MoreSingleAnchorAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_home_single_anchor_more) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
val ivPking = helper.getView<SVGAImageView>(R.id.iv_pking)
val ivTag = helper.getView<ImageView>(R.id.iv_tag)
ivPking.isVisible = item.isCrossPking
ivTag.isVisible = !CoreTextUtils.isEmptyText(item.tagPict) && !item.isCrossPking
if (item.isCrossPking) {
ivPking.loadFromAssets("svga/single_room_pking.svga")
} else {
ivTag.load(item.tagPict)
}
helper.setText(R.id.tv_online_num, item.onlineNum.toString())
.setText(R.id.tv_nickname, item.nick)
.setText(R.id.tv_room_name, item.title)
.setImageResource(
R.id.iv_gender,
if (item.gender == 1) R.drawable.ic_gender_male else R.drawable.ic_gender_female
)
helper.getView<ImageView>(R.id.iv_room_avatar)
.load(item.avatar, 12f, R.drawable.default_cover)
helper.itemView.setOnClickListener {
AVRoomActivity.start(mContext, item.uid)
}
}
}

View File

@@ -1,82 +0,0 @@
package com.chwl.app.home.adapter;
import android.content.Context;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.chwl.app.R;
import com.chwl.app.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.indicators.WrapPagerIndicator;
import java.util.List;
public class PartyMagicIndicatorAdapter extends CommonNavigatorAdapter {
private final List<? extends CharSequence> mTitleList;
private int textSize = 14;
private float minScale = 1f;
private OnItemSelectListener mOnItemSelectListener;
public PartyMagicIndicatorAdapter(List<? extends CharSequence> charSequences) {
this.mTitleList = charSequences;
}
@Override
public int getCount() {
return mTitleList == null ? 0 : mTitleList.size();
}
@Override
public IPagerTitleView getTitleView(Context context, final int i) {
ScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new ScaleTransitionPagerTitleView(context, true);
scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context, R.color.color_6D6B89));
scaleTransitionPagerTitleView.setIncludeFontPadding(false);
scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context, R.color.color_white));
scaleTransitionPagerTitleView.setMinScale(minScale);
scaleTransitionPagerTitleView.setTextSize(textSize);
int padding = UIUtil.dip2px(context, 10);
scaleTransitionPagerTitleView.setPadding(padding, 0, padding, 0);
scaleTransitionPagerTitleView.setText(mTitleList.get(i));
scaleTransitionPagerTitleView.setOnClickListener(view -> {
if (mOnItemSelectListener != null) {
mOnItemSelectListener.onItemSelect(i, scaleTransitionPagerTitleView);
}
});
return scaleTransitionPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
return new WrapPagerIndicator(context);
}
public int getTextSize() {
return textSize;
}
public void setTextSize(int textSize) {
this.textSize = textSize;
}
public float getMinScale() {
return minScale;
}
public void setMinScale(float minScale) {
this.minScale = minScale;
}
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
mOnItemSelectListener = onItemSelectListener;
}
public interface OnItemSelectListener {
void onItemSelect(int position, TextView view);
}
}

View File

@@ -1,58 +0,0 @@
package com.chwl.app.home.adapter
import android.widget.ImageView
import androidx.core.view.isGone
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.home.helper.BannerHelper
import com.chwl.app.ui.utils.load
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.CoreTextUtils
class RoomHotAdapter : BaseMultiItemQuickAdapter<HomeRoomInfo, BaseViewHolder>(null) {
init {
addItemType(HomeRoomInfo.TYPE_ROOM, R.layout.item_room_hot)
addItemType(HomeRoomInfo.TYPE_BROADCAST, R.layout.item_room_hot)
addItemType(HomeRoomInfo.TYPE_BANNER, R.layout.item_room_banner)
}
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
if (item.itemType != HomeRoomInfo.TYPE_BANNER) {
helper.itemView.setOnClickListener {
AVRoomActivity.start(mContext, item.uid)
}
helper.getView<ImageView>(R.id.iv_room_image).load(item.avatar)
helper.setText(R.id.tv_online_number, "${item.onlineNum}")
helper.setText(R.id.tv_room_title, item.title)
helper.setText(R.id.tv_id, "ID:${item.erbanNo}")
helper.setVisible(R.id.tv_in_pk, item.isCrossPking)
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
helper.getView<ImageView>(R.id.iv_room_tag).load(item.tagPict)
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)
)
for (i in avatars.indices) {
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
avatars[i].isGone = avatarUrl.isNullOrBlank()
avatars[i].load(avatarUrl)
}
} else {
BannerHelper.setBanner(helper.getView(R.id.roll_view), item.bannerVoList)
}
}
}

View File

@@ -1,55 +0,0 @@
package com.chwl.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.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.ui.utils.ImageLoadUtilsV2
import com.chwl.app.ui.utils.load
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.utils.CoreTextUtils
class RoomLikeAdapter : BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_like) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
helper.apply {
getView<ImageView>(R.id.iv_room_image).load(item.roomAvatar)
setText(R.id.tv_online_number, "${item.roomOnlineNum}")
setText(R.id.tv_room_title, item.roomName)
setText(R.id.tv_id, "ID:${item.erbanNo}")
}
helper.setVisible(R.id.tv_in_pk, item.isCrossPking)
helper.setVisible(R.id.iv_room_tag, !CoreTextUtils.isEmptyText(item.tagPict))
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict)
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)
)
for (i in avatars.indices) {
val avatarUrl = item.micUsers?.getOrNull(i)?.avatar
avatars[i].isGone = avatarUrl.isNullOrBlank()
avatars[i].load(avatarUrl)
}
helper.itemView.setOnClickListener {
AVRoomActivity.start(mContext, item.roomUid)
}
if (item.isValid) {
helper.setGone(R.id.tv_online_number, true)
helper.setBackgroundRes(R.id.view_bg, R.drawable.bg_home_like_item)
helper.setBackgroundRes(R.id.view_room_cover, R.drawable.bg_home_common_avatar)
} else {
helper.setGone(R.id.tv_online_number, false)
helper.setBackgroundRes(R.id.view_bg, R.drawable.bg_home_like_item_disable)
helper.setBackgroundRes(R.id.view_room_cover, R.drawable.bg_home_common_avatar_disable)
}
}
}

View File

@@ -5,6 +5,9 @@ import android.widget.LinearLayout
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.chwl.app.R
@@ -32,6 +35,8 @@ import com.chwl.core.home.bean.HomeTagInfo
import com.chwl.library.utils.ListUtils
import com.example.lib_utils.ktx.getDrawableById
import com.zhpan.bannerview.BannerViewPager
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
/**
首页
@@ -47,28 +52,28 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
initTab()
initBanner()
initResource()
initFlipper()
homeViewModel.homeTagLiveData.observe(this) {
loadTabList(transformTabList(it))
}
homeViewModel.getHomeTagInfo()
FragmentVisibleStateHelper(this).start {
onVisibleChanged(it)
initRank()
FragmentVisibleStateHelper(this).apply {
start {
onVisibleChanged(it, isFirstVisible)
}
}
homeViewModel.getHomeTabInfo()
homeViewModel.getBannerInfo()
homeViewModel.getHomeResourceInfo()
homeViewModel.getHomeRankList()
}
private fun initListener() {
// binding.tvSearch.setOnClickListener(this)
// binding.ivRanking.setOnClickListener(this)
// binding.ivMyRoom.setOnClickListener(this)
binding.refreshLayout.setOnRefreshListener {
it.finishRefresh()
childFragmentManager.fragments.forEach {
(it as? OnRefreshListener)?.onRefresh()
}
homeViewModel.getHomeRankList()
homeViewModel.getBannerInfo()
if (binding.viewPager.adapter?.itemCount == 0) {
homeViewModel.getHomeTagInfo()
homeViewModel.getHomeTabInfo()
}
}
binding.refreshLayout.isEnableLoadmore = false
@@ -76,7 +81,7 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
}
private fun initResource() {
homeViewModel.currentResourceLiveData.observe(this) {
homeViewModel.homeResourceLiveData.observe(this) {
it?.let {
val resourceViews = arrayOf(
binding.ivResource0,
@@ -86,8 +91,10 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
resourceViews.forEach {
it.isVisible = false
}
binding.viewFlipper.isVisible = false
return@observe
}
binding.viewFlipper.isVisible = true
resourceViews.forEachIndexed { index, imageView ->
imageView.isVisible = true
imageView.load(it[index].icon)
@@ -106,17 +113,21 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
}
}
}
homeViewModel.resourceJumpLiveData.observe(this) {
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
AVRoomActivity.start(context, it.uid)
} else {
RecommendRoomDialog.newInstance(it).show(context)
lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
homeViewModel.resourceJumpFlow.collectLatest {
dialogManager.dismissDialog()
it?.let {
if (it.isPick) {
AVRoomActivity.start(context, it.uid)
} else {
RecommendRoomDialog.newInstance(it).show(context)
}
}
}
}
}
homeViewModel.getCurrentResourceInfo()
}
private fun initBanner() {
@@ -140,20 +151,16 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
}
}
}
homeViewModel.getBannerInfo()
}
private fun initFlipper() {
private fun initRank() {
val rankAdapter = HomeRankViewFlipperAdapter()
binding.viewFlipper.adapter = rankAdapter
val list = ArrayList<List<String>>()
repeat(3) {
list.add(ArrayList())
}
rankAdapter.setNewData(list)
binding.viewFlipper.setInAnimation(context, R.animator.home_rank_anim_in)
binding.viewFlipper.setOutAnimation(context, R.animator.home_rank_anim_out)
binding.viewFlipper.startFlipping()
homeViewModel.homeRankListLiveData.observe(this) {
rankAdapter.setNewData(it ?: emptyList())
}
}
override fun onClick(v: View) {
@@ -172,15 +179,6 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
DemoCache.saveAnchorCardView(1)
}
}
// R.id.iv_ranking -> {
// //首页_排行榜
// CommonWebViewActivity.start(mContext, UriProvider.getRanking())
// }
//
// R.id.iv_my_room -> {
// OpenRoomHelper.openRoom(baseActivity)
// }
}
}
@@ -197,7 +195,7 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
override fun createFragment(position: Int): Fragment {
val itemId = getItemId(position)
return HomeTabFragment.newInstance(itemId.toInt()).apply {
return HomeTabRoomFragment.newInstance(itemId.toInt()).apply {
autoRefreshOnVisible = true
}
}
@@ -207,6 +205,9 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
}
}
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
homeViewModel.homeTabLiveData.observe(this) {
loadTabList(transformTabList(it))
}
}
private fun resetTabIndicator(list: List<String>) {
@@ -255,8 +256,14 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
tabList.clear()
}
private fun onVisibleChanged(isVisible: Boolean) {
private fun onVisibleChanged(isVisible: Boolean, isFirstVisible: Boolean) {
if (isVisible) {
if (!isFirstVisible) {
if (homeViewModel.homeResourceLiveData.value == null) {
homeViewModel.getHomeResourceInfo()
}
homeViewModel.getHomeRankList()
}
binding.viewFlipper.startFlipping()
} else {
binding.viewFlipper.stopFlipping()

View File

@@ -1,52 +1,55 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeHotAdapter
import com.chwl.app.home.adapter.HomeRoomAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.HomeTabFragmentBinding
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
import com.chwl.app.home.HomeMeViewModel
import com.chwl.app.support.FragmentVisibleStateHelper
/**
* 收藏
*/
class HomeRoomCollectListFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
class HomeRoomCollectListFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>() {
private lateinit var roomHotAdapter: HomeHotAdapter
private lateinit var adapter: HomeRoomAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val homeViewModel: HomeViewModel by viewModels()
private val viewModel: HomeMeViewModel by viewModels()
private var pageNum = 1
private var tabId: Int? = null
companion object {
fun newInstance(tabId: Int): HomeRoomCollectListFragment {
return HomeRoomCollectListFragment().apply {
arguments = Bundle().apply {
putInt("tabId", tabId)
fun newInstance(): HomeRoomCollectListFragment {
return HomeRoomCollectListFragment()
}
}
override fun init() {
initListView()
FragmentVisibleStateHelper(this).apply {
start {
if (it && !isFirstVisible) {
loadData(true)
}
}
}
}
override fun init() {
tabId = arguments?.getInt("tabId")
initHotRoomTab()
}
private fun initHotRoomTab() {
roomHotAdapter = HomeHotAdapter()
roomHotAdapter.onItemClickListener =
private fun initListView() {
adapter = HomeRoomAdapter()
adapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
if (homePlayInfo != null) {
//首页_房间派对
AVRoomActivity.start(mContext, homePlayInfo.uid)
@@ -54,17 +57,22 @@ class HomeRoomCollectListFragment : BaseViewBindingFragment<HomeTabFragmentBindi
}
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setPageSize(20)
.setAdapter(roomHotAdapter)
.setAdapter(adapter)
.setRecyclerView(binding.mRecyclerRoom)
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, getString(R.string.data_empty)))
.setEmptyView(
EmptyViewHelper.createEmptyTextViewHeight(
context,
getString(R.string.data_empty)
)
)
.setLayoutManager(LinearLayoutManager(mContext))
.build()
roomHotAdapter.setOnLoadMoreListener({
adapter.setOnLoadMoreListener({
loadData(false)
}, binding.mRecyclerRoom)
homeViewModel.tabHomeLiveData.observe(this) {
viewModel.collectRoomListLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
@@ -80,6 +88,6 @@ class HomeRoomCollectListFragment : BaseViewBindingFragment<HomeTabFragmentBindi
} else {
pageNum++
}
homeViewModel.getHomeTabName(tabId ?: 0, pageNum)
viewModel.getHomeCollectList(pageNum)
}
}

View File

@@ -1,52 +1,55 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeHotAdapter
import com.chwl.app.home.adapter.HomeRoomAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.HomeTabFragmentBinding
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
import com.chwl.app.home.HomeMeViewModel
import com.chwl.app.support.FragmentVisibleStateHelper
/**
* 最近访问记录
*/
class HomeRoomHistoryListFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
class HomeRoomHistoryListFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>() {
private lateinit var roomHotAdapter: HomeHotAdapter
private lateinit var adapter: HomeRoomAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val homeViewModel: HomeViewModel by viewModels()
private val viewModel: HomeMeViewModel by viewModels()
private var pageNum = 1
private var tabId: Int? = null
companion object {
fun newInstance(tabId: Int): HomeRoomHistoryListFragment {
return HomeRoomHistoryListFragment().apply {
arguments = Bundle().apply {
putInt("tabId", tabId)
fun newInstance(): HomeRoomHistoryListFragment {
return HomeRoomHistoryListFragment()
}
}
override fun init() {
initListView()
FragmentVisibleStateHelper(this).apply {
start {
if (it && !isFirstVisible) {
loadData(true)
}
}
}
}
override fun init() {
tabId = arguments?.getInt("tabId")
initHotRoomTab()
}
private fun initHotRoomTab() {
roomHotAdapter = HomeHotAdapter()
roomHotAdapter.onItemClickListener =
private fun initListView() {
adapter = HomeRoomAdapter()
adapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
if (homePlayInfo != null) {
//首页_房间派对
AVRoomActivity.start(mContext, homePlayInfo.uid)
@@ -54,17 +57,22 @@ class HomeRoomHistoryListFragment : BaseViewBindingFragment<HomeTabFragmentBindi
}
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setPageSize(20)
.setAdapter(roomHotAdapter)
.setAdapter(adapter)
.setRecyclerView(binding.mRecyclerRoom)
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, getString(R.string.data_empty)))
.setEmptyView(
EmptyViewHelper.createEmptyTextViewHeight(
context,
getString(R.string.data_empty)
)
)
.setLayoutManager(LinearLayoutManager(mContext))
.build()
roomHotAdapter.setOnLoadMoreListener({
adapter.setOnLoadMoreListener({
loadData(false)
}, binding.mRecyclerRoom)
homeViewModel.tabHomeLiveData.observe(this) {
viewModel.historyRoomListLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
@@ -80,6 +88,6 @@ class HomeRoomHistoryListFragment : BaseViewBindingFragment<HomeTabFragmentBindi
} else {
pageNum++
}
homeViewModel.getHomeTabName(tabId ?: 0, pageNum)
viewModel.getHomeHistoryList(pageNum)
}
}

View File

@@ -1,6 +1,7 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
@@ -9,21 +10,21 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeHotAdapter
import com.chwl.app.home.adapter.HomeRoomAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.HomeTabFragmentBinding
import com.chwl.app.databinding.HomeTabRoomFragmentBinding
import com.chwl.app.support.FragmentVisibleStateHelper
/**
* 首页-房间列表
*/
class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
class HomeTabRoomFragment : BaseViewBindingFragment<HomeTabRoomFragmentBinding>(),
SwipeRefreshLayout.OnRefreshListener {
private lateinit var roomHotAdapter: HomeHotAdapter
private lateinit var adapter: HomeRoomAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
@@ -33,18 +34,20 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
private var pageNum = 1
private var tabId: Int? = null
companion object {
fun newInstance(tabId: Int): HomeTabFragment {
return HomeTabFragment().apply {
fun newInstance(tabId: Int): HomeTabRoomFragment {
return HomeTabRoomFragment().apply {
arguments = Bundle().apply {
putInt("tabId", tabId)
}
}
}
}
override fun init() {
tabId = arguments?.getInt("tabId")
initHotRoomTab()
initListView()
if (autoRefreshOnVisible) {
FragmentVisibleStateHelper(this).apply {
start {
@@ -56,11 +59,11 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
}
}
private fun initHotRoomTab() {
roomHotAdapter = HomeHotAdapter()
roomHotAdapter.onItemClickListener =
private fun initListView() {
adapter = HomeRoomAdapter()
adapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
val homePlayInfo: HomeRoomInfo? = adapter.getItem(position)
if (homePlayInfo != null) {
//首页_房间派对
AVRoomActivity.start(mContext, homePlayInfo.uid)
@@ -68,17 +71,22 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
}
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setPageSize(20)
.setAdapter(roomHotAdapter)
.setAdapter(adapter)
.setRecyclerView(binding.mRecyclerRoom)
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, getString(R.string.data_empty)))
.setEmptyView(
EmptyViewHelper.createEmptyTextViewHeight(
context,
getString(R.string.data_empty)
)
)
.setLayoutManager(LinearLayoutManager(mContext))
.build()
roomHotAdapter.setOnLoadMoreListener({
adapter.setOnLoadMoreListener({
loadData(false)
}, binding.mRecyclerRoom)
homeViewModel.tabHomeLiveData.observe(this) {
homeViewModel.tabRoomListLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
@@ -94,7 +102,7 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
} else {
pageNum++
}
homeViewModel.getHomeTabName(tabId ?: 0, pageNum)
homeViewModel.getTabRoomList(tabId ?: 0, pageNum)
}
override fun onRefresh() {

View File

@@ -16,7 +16,8 @@ import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.ui.utils.loadImage
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.chwl.core.room.bean.RoomInfo
import com.chwl.core.home.bean.HomeRoomCardInfo
import com.chwl.core.home.bean.MicUsersBean
import com.example.lib_utils.ktx.singleClick
/**
@@ -40,6 +41,7 @@ class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>() {
private fun initListener() {
binding.refreshLayout.setOnRefreshListener {
it.finishRefresh()
viewModel.getMyRoomInfo()
childFragmentManager.fragments.forEach {
(it as? SwipeRefreshLayout.OnRefreshListener)?.onRefresh()
}
@@ -80,15 +82,15 @@ class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>() {
}
}
private fun updateRoomInfo(roomInfo: RoomInfo?) {
private fun updateRoomInfo(roomInfo: HomeRoomCardInfo?) {
binding.tvRoomName.text = roomInfo?.title
binding.tvRoomTopic.text = roomInfo?.roomDesc
binding.ivRoomCover.loadImage(roomInfo?.backPic ?: "")
binding.tvRoomTopic.text = roomInfo?.introduction
binding.ivRoomCover.loadImage(roomInfo?.avatar ?: "")
binding.tvOnlineNumber.text = roomInfo?.onlineNum?.toString() ?: "0"
loadRoomUsers(null)
loadRoomUsers(roomInfo?.micUsers)
}
private fun loadRoomUsers(list: List<String>?) {
private fun loadRoomUsers(list: List<MicUsersBean>?) {
val avatarViewList = arrayOf(
binding.ivRoomUser0,
binding.ivRoomUser1,
@@ -102,9 +104,10 @@ class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>() {
imageView.setImageDrawable(null)
imageView.isGone = true
} else {
imageView.loadAvatar(item)
imageView.loadAvatar(item.avatar)
imageView.isVisible = true
}
}
binding.layoutRoomUserList.isGone = list.isNullOrEmpty()
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -20,6 +20,16 @@
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearance="@style/shape_home_recommend_item" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_pk"
android:layout_width="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginEnd="@dimen/dp_4"
android:layout_marginBottom="@dimen/dp_2"
android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="@id/iv_room_image"
app:layout_constraintEnd_toEndOf="@id/iv_room_image" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_room_title"
android:layout_width="0dp"

View File

@@ -1,141 +0,0 @@
<?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="wrap_content"
android:layout_marginStart="7dp"
android:layout_marginEnd="7dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="6dp"
android:background="@drawable/bg_home_play_item_man"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="722:172"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_room_image"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="8dp"
android:src="@drawable/default_cover"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_border_color="#FFCCD7FF"
app:riv_border_width="1.5dp"
app:riv_corner_radius="20dp" />
<TextView
android:id="@+id/tv_room_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="24dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/iv_room_tag"
app:layout_constraintStart_toEndOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/layout_item_home_play_01" />
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="14dp"
android:layout_marginTop="11dp"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
tools:src="@drawable/tag_101" />
<TextView
android:id="@+id/tv_mg_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:layout_marginEnd="40dp"
android:textColor="@color/white"
android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/layout_item_home_play_02" />
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="26dp"
android:drawableStart="@drawable/ic_home_play_online"
android:drawablePadding="2dp"
android:gravity="bottom"
android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/fl_avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/fl_avatar"
tools:text="266" />
<FrameLayout
android:id="@+id/fl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="@id/iv_room_tag"
app:layout_constraintStart_toEndOf="@id/iv_room_tag">
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="18dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="36dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="54dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="70dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,156 +0,0 @@
<?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="wrap_content"
android:layout_marginStart="7dp"
android:layout_marginEnd="7dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="6dp"
android:background="@drawable/bg_home_play_item_broadcast"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="722:204"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_room_image"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="8dp"
android:src="@drawable/default_cover"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_border_color="#FFCCD7FF"
app:riv_border_width="1.5dp"
app:riv_corner_radius="20dp" />
<TextView
android:id="@+id/tv_room_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/tv_broad_msg"
app:layout_constraintStart_toEndOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/layout_item_home_play_broadcast_01" />
<TextView
android:id="@+id/tv_broad_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
android:layout_marginTop="8dp"
android:textColor="#ff248cfe"
android:textSize="12sp"
app:layout_constraintBottom_toTopOf="@id/iv_room_tag"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
tools:text="@string/layout_item_home_play_broadcast_02" />
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="14dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_broad_msg"
tools:src="@drawable/tag_101" />
<TextView
android:id="@+id/tv_mg_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:layout_marginEnd="40dp"
android:textColor="#ffffffff"
android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/layout_item_home_play_broadcast_03" />
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="26dp"
android:drawableStart="@drawable/ic_home_play_online"
android:drawablePadding="2dp"
android:gravity="bottom"
android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/fl_avatar"
app:layout_constraintBottom_toBottomOf="@id/fl_avatar"
tools:text="266" />
<FrameLayout
android:id="@+id/fl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="@id/iv_room_tag"
app:layout_constraintStart_toEndOf="@id/iv_room_tag">
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="18dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="36dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="54dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="70dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,128 +0,0 @@
<?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:id="@+id/root_view"
android:layout_width="188dp"
android:layout_height="96dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_avatar_big"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="90:96"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/bg_single_anchor_home"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_room_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="5dp"
android:layout_marginEnd="@dimen/dp_15"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_15"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@id/iv_avatar"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_avatar"
tools:text="@string/layout_item_home_single_anchor_01" />
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/color_333333"
android:textSize="10sp"
app:layout_constraintLeft_toLeftOf="@id/tv_room_name"
app:layout_constraintTop_toBottomOf="@id/tv_room_name"
tools:text="@string/layout_item_home_single_anchor_02" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_gender"
android:layout_width="@dimen/dp_21"
android:layout_height="@dimen/dp_14"
android:layout_marginStart="@dimen/dp_4"
app:layout_constraintBottom_toBottomOf="@id/tv_nickname"
app:layout_constraintLeft_toRightOf="@id/tv_nickname"
app:layout_constraintTop_toTopOf="@id/tv_nickname"
tools:src="@drawable/ic_gender_female" />
<LinearLayout
android:id="@+id/ll_topic"
android:layout_width="0dp"
android:layout_height="@dimen/dp_28"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_8"
android:background="@drawable/bg_9dadff_radius_15"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/iv_tag"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="@dimen/dp_8"
android:visibility="gone"
tools:src="@drawable/tag_101" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_pking"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_marginStart="@dimen/dp_8"
android:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_topic"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="10dp"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_10"
tools:text="@string/layout_item_home_single_anchor_03" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,129 +0,0 @@
<?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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="6dp"
android:orientation="vertical"
tools:layout_width="180dp">
<ImageView
android:id="@+id/iv_room_avatar"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_tag"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/tag_101" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/iv_pking"
android:layout_width="40dp"
android:layout_height="20dp"
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<View
android:id="@+id/view_bg_bottom"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/bg_single_anchor_more_bottom"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="334:110"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_room_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="@string/layout_item_home_single_anchor_more_01" />
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_3"
android:ellipsize="end"
android:lines="1"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@id/tv_room_name"
app:layout_constraintEnd_toStartOf="@id/iv_gender"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="@id/tv_room_name"
tools:text="@string/layout_item_home_single_anchor_more_02" />
<ImageView
android:id="@+id/iv_gender"
android:layout_width="21dp"
android:layout_height="14dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="10dp"
android:src="@drawable/ic_gender_male"
app:layout_constraintBottom_toBottomOf="@id/tv_nickname"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_nickname"
app:layout_constraintTop_toTopOf="@id/tv_nickname" />
<LinearLayout
android:id="@+id/ll_online"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginEnd="6dp"
android:background="@drawable/shape_black_t40_12"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="@dimen/dp_10"
android:layout_height="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_7"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
android:src="@drawable/ic_singer_hot" />
<TextView
android:id="@+id/tv_online_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_3"
android:layout_marginEnd="@dimen/dp_10"
android:includeFontPadding="false"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
tools:text="@string/layout_item_home_single_anchor_more_03" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,24 +0,0 @@
<?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="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="15dp">
<com.chwl.app.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintDimensionRatio="690:160"
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>

View File

@@ -1,167 +0,0 @@
<?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="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="74dp"
android:layout_marginStart="15dp"
android:background="@drawable/bg_home_hot_item"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view_room_cover"
android:layout_width="66dp"
android:layout_height="66dp"
android:layout_marginTop="2dp"
android:background="@drawable/bg_home_hot_avatar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_room_image"
android:layout_width="56dp"
android:layout_height="56dp"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="@id/view_room_cover"
app:layout_constraintEnd_toEndOf="@id/view_room_cover"
app:layout_constraintStart_toStartOf="@id/view_room_cover"
app:layout_constraintTop_toTopOf="@id/view_room_cover" />
<TextView
android:id="@+id/tv_in_pk"
android:layout_width="44dp"
android:layout_height="16dp"
android:background="@drawable/bg_shape_play_pk"
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/layout_item_room_hot_01"
android:textColor="#ffffffff"
android:textSize="12dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/iv_room_image"
app:layout_constraintEnd_toEndOf="@id/iv_room_image"
app:layout_constraintStart_toStartOf="@id/iv_room_image"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_room_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/iv_room_tag"
app:layout_constraintStart_toEndOf="@id/view_room_cover"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="@string/layout_item_room_hot_02" />
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="14dp"
android:layout_marginTop="11dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
tools:src="@drawable/tag_101"
tools:text="@string/layout_item_room_hot_03" />
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:textColor="#66333333"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/iv_room_tag"
app:layout_constraintStart_toEndOf="@id/iv_room_tag"
tools:text="ID:1234" />
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginEnd="10dp"
android:drawableStart="@drawable/ic_home_hot_hot"
android:drawablePadding="2dp"
android:gravity="bottom"
android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="266" />
<FrameLayout
android:id="@+id/fl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="17dp"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="14dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="28dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="44dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="58dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,168 +0,0 @@
<?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="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="10dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="74dp"
android:layout_marginTop="6dp"
android:background="@drawable/bg_home_common_item"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_room_image"
android:layout_width="74dp"
android:layout_height="74dp"
android:layout_marginStart="3dp"
android:src="@drawable/default_cover"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:riv_corner_radius="8dp" />
<TextView
android:id="@+id/tv_in_pk"
android:layout_width="44dp"
android:layout_height="16dp"
android:background="@drawable/bg_like_pk"
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/layout_item_room_like_01"
android:textColor="#ffffffff"
android:textSize="12dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/iv_room_image"
tools:visibility="visible" />
<View
android:id="@+id/view_room_cover"
android:layout_width="74dp"
android:layout_height="74dp"
android:background="@drawable/bg_home_common_avatar"
app:layout_constraintBottom_toBottomOf="@id/iv_room_image"
app:layout_constraintEnd_toEndOf="@id/iv_room_image"
app:layout_constraintStart_toStartOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/iv_room_image" />
<TextView
android:id="@+id/tv_room_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/view_room_cover"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/layout_item_room_like_02" />
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="14dp"
android:layout_marginTop="11dp"
android:visibility="visible"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
tools:src="@drawable/tag_101" />
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginTop="11dp"
android:includeFontPadding="false"
android:textColor="#66333333"
android:textSize="12sp"
app:layout_constraintStart_toEndOf="@id/iv_room_tag"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
app:layout_goneMarginStart="0dp"
tools:text="ID:1234" />
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:layout_marginEnd="10dp"
android:drawableStart="@drawable/ic_home_hot_hot"
android:drawablePadding="2dp"
android:gravity="bottom"
android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="266" />
<FrameLayout
android:id="@+id/fl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="18dp"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="14dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="28dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="44dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
<com.chwl.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginStart="58dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>