feat:完善首页交友页UI与数据

feat:删除无用代码(旧首页)
This commit is contained in:
Max
2023-12-25 18:34:22 +08:00
parent 37ed8facf3
commit 6491efe708
64 changed files with 662 additions and 3290 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -2,12 +2,10 @@ package com.nnbc123.app;
import static com.nnbc123.core.channel_page.model.ChannelPageModel.KEY_FLAG_VALID_CHANNEL_PAGE;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
@@ -16,7 +14,6 @@ import android.util.SparseArray;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -55,7 +52,6 @@ import com.nnbc123.app.home.dialog.ProtocolUpdateDialog;
import com.nnbc123.app.home.fragment.HomeFragment;
import com.nnbc123.app.home.fragment.MeFragment;
import com.nnbc123.app.home.fragment.MsgFragment;
import com.nnbc123.app.home.fragment.PartyFragment;
import com.nnbc123.app.home.fragment.PmModeFragment;
import com.nnbc123.app.home.presenter.MainPresenter;
import com.nnbc123.app.home.view.IMainView;
@@ -176,7 +172,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
private Runnable touchRunnable;
{
fragmentArray.put(MainTabType.TAB_TYPE_PARTY, new PartyFragment());
fragmentArray.put(MainTabType.TAB_TYPE_HOME, new HomeFragment());
fragmentArray.put(MainTabType.TAB_TYPE_MSG, new MsgFragment());
fragmentArray.put(MainTabType.TAB_TYPE_SQUARE, new SquareFragment());

View File

@@ -93,7 +93,7 @@ public class AudioPlayerHelper {
try {
player.setDataSource(filePath);
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
}
preparing = true;
@@ -122,6 +122,9 @@ public class AudioPlayerHelper {
}
public void endPlay() {
if (listener != null) {
listener.onCompletion();
}
handler.removeMessages(WHAT_STATUS.COUNT_PLAY);
if (player != null) {
if (preparing) {

View File

@@ -87,6 +87,19 @@ class HomeViewModel : BaseViewModel() {
private val _newFriendLiveData = MutableLiveData<ListResult<UserInfo>>()
val newFriendLiveData: LiveData<ListResult<UserInfo>> = _newFriendLiveData
val gameTabLiveData = MutableLiveData<MutableList<HomeGameTab>>()
fun getHomeGameTab() {
safeLaunch {
if (gameTabLiveData.value == null) {
HomeModel.getHomeGameTabListByLocal()?.let {
gameTabLiveData.value = it
}
}
gameTabLiveData.value = HomeModel.getHomeGameTabList()
}
}
fun getBannerInfo() {
safeLaunch {
_bannerLiveData.value = HomeModel.getHomeBanner("1")
@@ -340,13 +353,13 @@ class HomeViewModel : BaseViewModel() {
)
}
fun getNewFriendList(gender: Int? = null) {
fun getNewFriendList(gender: Int? = null, gameId: Long? = null) {
safeLaunch(
onError = {
_newFriendLiveData.value = ListResult.failed(1)
},
block = {
val result = HomeModel.getNewFriendList(gender)
val result = HomeModel.getNewFriendList(gender, gameId)
_newFriendLiveData.value = ListResult.success(result, 1)
}
)

View File

@@ -1,58 +0,0 @@
package com.nnbc123.app.home.adapter;
import android.graphics.drawable.AnimationDrawable;
import androidx.annotation.NonNull;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.nnbc123.app.R;
import com.nnbc123.app.avroom.activity.AVRoomActivity;
import com.nnbc123.app.common.widget.CircleImageView;
import com.nnbc123.app.ui.user.UserInfoActivity;
import com.nnbc123.app.ui.utils.ImageLoadUtilsV2;
import com.nnbc123.core.home.bean.HomeRoomInfo;
import com.nnbc123.core.statistic.StatisticManager;
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.core.utils.StringExtensionKt;
public class HomeConcernsAdapter extends BaseQuickAdapter<HomeRoomInfo, BaseViewHolder> {
public HomeConcernsAdapter() {
super(R.layout.item_home_concerns, null);
}
@Override
protected void convert(@NonNull BaseViewHolder helper, HomeRoomInfo item) {
if (item == null) {
return;
}
CircleImageView circleImageView = helper.getView(R.id.civ_room_avatar);
ImageLoadUtilsV2.loadImage(circleImageView, item.getAvatar());
helper.setText(R.id.tv_room_name, StringExtensionKt.subAndReplaceDot(item.getNick(), 4));
if (item.getRoomUid() > 0) {
helper.setVisible(R.id.view_avatar_bg, true);
helper.setVisible(R.id.view_living, true);
helper.setVisible(R.id.tv_live, true);
if (helper.getView(R.id.view_living).getBackground() instanceof AnimationDrawable) {
((AnimationDrawable) helper.getView(R.id.view_living).getBackground()).start();
}
helper.itemView.setOnClickListener(v -> {
AVRoomActivity.startForFromType(mContext,
item.getRoomUid(),
AVRoomActivity.FROM_TYPE_USER,
item.getNick(),
String.valueOf(item.getUid()));
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_GZR_ROOM_SUCCESS, "喜欢tab点击关注的人进入房间");
});
} else {
helper.setVisible(R.id.view_avatar_bg, false);
helper.setVisible(R.id.tv_live, false);
helper.setVisible(R.id.view_living, false);
helper.itemView.setOnClickListener(v -> UserInfoActivity.Companion.start(mContext, item.getUid()));
}
}
}

View File

@@ -0,0 +1,48 @@
package com.nnbc123.app.home.adapter
import android.widget.ImageView
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.HomeGameTab
/**
* Created by Max on 2023/12/25 10:30
* Desc:
**/
class HomeFriendsGameTabAdapter :
BaseQuickAdapter<HomeGameTab, BaseViewHolder>(R.layout.home_friends_item_game) {
var selectGameId: Long? = null
private var selectPosition: Int? = null
override fun convert(helper: BaseViewHolder, item: HomeGameTab) {
if (helper.absoluteAdapterPosition == selectPosition) {
helper.getView<ImageView>(R.id.iv_cover).load(item.onClick, defaultRes = null)
} else {
helper.getView<ImageView>(R.id.iv_cover).load(item.onUnclick, defaultRes = null)
}
}
override fun setNewData(data: MutableList<HomeGameTab>?) {
super.setNewData(data)
}
fun selectItem(position: Int) {
val item = getItem(position) ?: return
if (position == selectPosition) {
this.selectGameId = null
this.selectPosition = null
notifyItemChanged(position)
} else {
val oldPosition = this.selectPosition
this.selectGameId = item.gameId
this.selectPosition = position
if (oldPosition != null) {
notifyItemChanged(oldPosition)
}
notifyItemChanged(position)
}
}
}

View File

@@ -1,9 +1,36 @@
package com.nnbc123.app.home.adapter
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.chuhai.utils.ktx.singleClick
import com.nnbc123.app.R
import com.nnbc123.app.audio.helper.AudioPlayerHelper
import com.nnbc123.app.audio.helper.OnPlayListener
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.utils.loadAvatar
import com.nnbc123.app.ui.utils.loadFromAssets
import com.nnbc123.app.vip.VipHelper
import com.nnbc123.core.Constants
import com.nnbc123.core.manager.AudioEngineManager
import com.nnbc123.core.manager.AvRoomDataManager
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.utils.StarUtils
import com.nnbc123.library.utils.SingleToastUtil
import com.opensource.svgaplayer.SVGADrawable
import com.opensource.svgaplayer.SVGAImageView
import com.opensource.svgaplayer.SVGAParser
import com.opensource.svgaplayer.SVGAVideoEntity
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.Date
import java.util.concurrent.TimeUnit
/**
* Created by Max on 2023/12/18 18:33
@@ -11,7 +38,211 @@ import com.nnbc123.core.user.bean.UserInfo
**/
class HomeFriendsUserAdapter :
BaseQuickAdapter<UserInfo, BaseViewHolder>(R.layout.home_friends_list_item) {
private var disposable: Disposable? = null
private var isMute = false
private var isRemoteMute = false
override fun convert(helper: BaseViewHolder, item: UserInfo) {
helper.setText(R.id.tv_name, item.nick)
// 昵称
val nameView = helper.getView<TextView>(R.id.tv_name)
nameView.text = item.nick
VipHelper.loadVipNickColor(nameView, item.userVipInfoVO, "#2B2D33")
// 头像
helper.getView<ImageView>(R.id.iv_avatar).load(item.avatar)
// 星座
val star = StarUtils.getConstellation(Date(item.birth))
helper.setGone(R.id.tv_constellation, !star.isNullOrEmpty())
.setText(R.id.tv_constellation, star)
// 状态
if (item.isInOnline) {
val svgaLiving = helper.getView<SVGAImageView>(R.id.svga_state_live)
if (item.inRoomUid > 0L) {
svgaLiving.loadFromAssets("svga/home_living_white.svga")
svgaLiving.startAnimation()
svgaLiving.isVisible = true
helper.getView<View>(R.id.iv_state_leisure).isVisible = false
helper.setText(R.id.tv_state, "直播中")
} else {
svgaLiving.stopAnimation()
svgaLiving.isVisible = false
helper.getView<View>(R.id.iv_state_leisure).isVisible = true
helper.setText(R.id.tv_state, "空闲中")
}
helper.setGone(R.id.layout_state, true)
} else {
helper.setGone(R.id.layout_state, false)
}
// 房间
val roomInfoView = helper.getView<View>(R.id.layout_room_info)
if (item.roomTitle.isNullOrEmpty()) {
roomInfoView.isVisible = false
} else {
roomInfoView.isVisible = true
helper.setText(R.id.tv_room_title, item.roomTitle)
roomInfoView.singleClick {
if (!item.isLock && item.inRoomUid > 0) {
AVRoomActivity.start(it.context, item.inRoomUid)
}
}
}
// 声音
val audioUrl = item.voiceCard?.getAudioUrl()
val svagAudio = helper.getView<SVGAImageView>(R.id.svga_audio)
if (audioUrl.isNullOrEmpty()) {
svagAudio.stopAnimation()
helper.setGone(R.id.layout_audio, false)
} else {
helper.getView<TextView>(R.id.tv_audio_duration).text =
"${item.voiceCard?.getAudioDuration() ?: 0}"
helper.getView<View>(R.id.layout_audio)
.setOnClickListener { toggleAudio(helper, item) }
svagAudio.setImageResource(R.drawable.home_ic_audio_playing)
helper.setGone(R.id.layout_audio, true)
}
// 游戏
val groupGame = helper.getView<View>(R.id.group_game)
item.userGamePartnerVo?.let {
val name =
if (!it.firstGameName.isNullOrEmpty() && !it.secondGameName.isNullOrEmpty()) {
"${it.firstGameName}|${it.secondGameName}"
} else if (!it.firstGameName.isNullOrEmpty()) {
it.firstGameName
} else if (!it.secondGameName.isNullOrEmpty()) {
it.secondGameName
} else {
null
}
helper.setText(R.id.tv_game_name, name)
helper.getView<ImageView>(R.id.iv_game_icon).load(it.firstLogo)
groupGame.isVisible = true
} ?: kotlin.run {
groupGame.isVisible = false
}
}
private fun toggleAudio(holder: BaseViewHolder, item: UserInfo) {
if (item.isVoicePlaying) {
stopAudio()
} else {
playAudio(holder, item)
}
}
private fun stopAudio() {
AudioPlayerHelper.get().endPlay()
}
private fun resetAudioUI(holder: BaseViewHolder, item: UserInfo) {
item.isVoicePlaying = false
disposable?.dispose()
holder.setImageResource(R.id.iv_audio_btn, R.drawable.home_ic_audio_play)
holder.setText(
R.id.tv_audio_duration,
"${item.voiceCard?.getAudioDuration() ?: 0}"
)
val svgaImageView = holder.getView<SVGAImageView>(R.id.svga_audio)
svgaImageView.stopAnimation()
svgaImageView.setImageResource(R.drawable.home_ic_audio_playing)
AvRoomDataManager.get().mCurrentRoomInfo?.run {
AudioEngineManager.get().isRemoteMute = isRemoteMute //非靜音
AudioEngineManager.get().isMute = isMute //能説話
AudioEngineManager.get().setRole(
if (isRemoteMute) Constants.CLIENT_ROLE_AUDIENCE else Constants.CLIENT_ROLE_BROADCASTER
)
}
}
private fun playAudio(holder: BaseViewHolder, item: UserInfo) {
AudioPlayerHelper.get().endPlay()
item.isVoicePlaying = true
holder.setImageResource(R.id.iv_audio_btn, R.drawable.home_ic_audio_pause)
val svgaImageView = holder.getView<SVGAImageView>(R.id.svga_audio)
SVGAParser.shareParser()
.decodeFromAssets("svga/home_voice_playing.svga", object : SVGAParser.ParseCompletion {
override fun onComplete(videoItem: SVGAVideoEntity) {
if (item.isVoicePlaying) {
val drawable = SVGADrawable(videoItem)
svgaImageView.setImageDrawable(drawable)
svgaImageView.startAnimation()
}
}
override fun onError() {
}
})
val duration = item.voiceCard?.getAudioDuration() ?: 0
disposable = Observable.interval(1L, TimeUnit.SECONDS)
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.map { it + 1 }
.takeUntil { it == duration }
.subscribe {
holder.setText(
R.id.tv_audio_duration,
"${(duration - it)}"
)
}
AvRoomDataManager.get().mCurrentRoomInfo?.run {
isRemoteMute = AudioEngineManager.get().isRemoteMute
isMute = AudioEngineManager.get().isMute
AudioEngineManager.get().isRemoteMute = true //設置靜音
AudioEngineManager.get().isMute = true //不能説話
AudioEngineManager.get().setRole(Constants.CLIENT_ROLE_AUDIENCE)
}
AudioPlayerHelper.get()
.playInThread(item.voiceCard?.getAudioUrl(), object : OnPlayListener {
override fun onError(error: String) {
SingleToastUtil.showToast("播放出错,请重试")
resetAudioUI(holder, item)
}
override fun onPrepared() {}
override fun onPlaying(currDuration: Long) {}
override fun onCompletion() {
resetAudioUI(holder, item)
}
})
}
override fun onViewAttachedToWindow(holder: BaseViewHolder) {
super.onViewAttachedToWindow(holder)
if (holder.itemViewType == 0) {
val svgaLiving = holder.getView<SVGAImageView>(R.id.svga_state_live)
if (svgaLiving.isVisible) {
svgaLiving?.loadFromAssets("svga/home_living_white.svga")
}
}
}
override fun onViewDetachedFromWindow(holder: BaseViewHolder) {
super.onViewDetachedFromWindow(holder)
if (holder.itemViewType == 0) {
val position = holder.absoluteAdapterPosition
if (position < 0 || position >= data.size) {
return
}
val item = data[position]
if (item.isVoicePlaying) {
stopAudio()
}
}
}
override fun setNewData(data: MutableList<UserInfo>?) {
stopAudio()
super.setNewData(data)
}
}

View File

@@ -26,7 +26,7 @@ class HomePartyRoomAdapter :
if (item.backgroundPic.isNullOrEmpty()) {
borderView.setImageDrawable(null)
} else {
borderView.load(item.backgroundPic, defaultRes = R.color.transparent)
borderView.load(item.backgroundPic, defaultRes = null)
}
}
val avatars: Array<ImageView> = arrayOf(

View File

@@ -1,88 +0,0 @@
package com.nnbc123.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.nnbc123.app.R
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.utils.ImageLoadUtilsV2
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.ifNullOrEmpty
/**
* 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.setGone(R.id.iv_room_tag, !TextUtils.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 { "扩列交友" }
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

@@ -1,43 +0,0 @@
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

@@ -1,55 +0,0 @@
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.ImageLoadUtilsV2
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.home.bean.HomeRoomInfo
class RoomCommonAdapter :
BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_common) {
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.iv_room_tag, !TextUtils.isEmpty(item.tagPict))
ImageLoadUtilsV2.loadImage(helper.getView(R.id.iv_room_tag), item.tagPict)
helper.setGone(R.id.tv_tag_content, !TextUtils.isEmpty(item.iconContent))
.setText(R.id.tv_tag_content, item.iconContent)
helper.getView<View>(R.id.view_bg).setBackgroundResource(
when (helper.layoutPosition % 3) {
0 -> R.drawable.bg_home_common_item0
1 -> R.drawable.bg_home_common_item1
else -> R.drawable.bg_home_common_item2
}
)
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

@@ -1,64 +0,0 @@
package com.nnbc123.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.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
class RoomGameAdapter : BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layout.item_room_game) {
override fun convert(helper: BaseViewHolder, item: HomeRoomInfo) {
helper.apply {
getView<ImageView>(R.id.iv_room_image).load(item.avatar)
setText(R.id.tv_room_title, item.title)
itemView.setOnClickListener {
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_MINI_GAME_ROOM_SUCCESS, "小游戏tab进入房间成功")
AVRoomActivity.start(mContext, item.uid)
}
val tvRoomGame = helper.getView<TextView>(R.id.tv_room_game)
tvRoomGame.text = item.mgName
helper.setText(R.id.tv_game_status, if (item.state == 1) "游戏中" else "等人中")
setGradient(tvRoomGame)
}
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)
}
}
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()
}
}

View File

@@ -1,62 +0,0 @@
package com.nnbc123.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.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.TextUtils
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)
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_RM_ROOM_SUCCESS, "热门进入房间")
}
helper.getView<ImageView>(R.id.iv_room_image).load(item.avatar,round = 8f)
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, !TextUtils.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,59 +0,0 @@
package com.nnbc123.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.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.ui.utils.ImageLoadUtilsV2
import com.nnbc123.app.ui.utils.load
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import com.nnbc123.core.utils.TextUtils
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, !TextUtils.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)
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_SCFJ_ROOM_SUCCESS, "成功进入收藏的房间")
}
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

@@ -1,111 +0,0 @@
package com.nnbc123.app.home.adapter
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.widget.AppCompatImageView
import androidx.core.view.isVisible
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.BaseViewHolder
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.user.UserInfoActivity
import com.nnbc123.app.ui.utils.ImageLoadUtilsV2
import com.nnbc123.app.ui.utils.loadAvatar
import com.nnbc123.app.ui.utils.loadFromAssets
import com.nnbc123.app.vip.VipHelper
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.core.utils.CurrentTimeUtils
import com.nnbc123.core.utils.StarUtils
import com.nnbc123.core.utils.TextUtils
import com.nnbc123.core.utils.ifNullOrEmpty
import com.opensource.svgaplayer.SVGAImageView
import java.util.*
class RoomNewFriendsAdapter :
BaseQuickAdapter<UserInfo, BaseViewHolder>(R.layout.item_room_new_friends) {
override fun convert(helper: BaseViewHolder, item: UserInfo) {
val userGamePartnerInfo = item.userGamePartnerVo
if (userGamePartnerInfo != null) {
helper.getView<AppCompatImageView>(R.id.iv_game).visibility = View.VISIBLE
helper.getView<LinearLayout>(R.id.ll_game_type).visibility = View.VISIBLE
if (TextUtils.isEmptyText(userGamePartnerInfo.secondGameName)) {
helper.setText(R.id.tv_game_type, userGamePartnerInfo.firstGameName)
} else {
helper.setText(
R.id.tv_game_type,
"${userGamePartnerInfo.firstGameName}|${userGamePartnerInfo.secondGameName}"
)
}
ImageLoadUtilsV2.loadImage(
helper.getView(R.id.iv_game_icon),
userGamePartnerInfo.firstLogo
)
} else {
helper.getView<AppCompatImageView>(R.id.iv_game).visibility = View.GONE
helper.getView<LinearLayout>(R.id.ll_game_type).visibility = View.GONE
}
helper.getView<ImageView>(R.id.iv_avatar).loadAvatar(item.avatar)
helper.setText(R.id.tv_desc, item.userDesc.ifNullOrEmpty { "我是个默认签名" })
.setText(
R.id.tv_age,
((CurrentTimeUtils.getCurrentTime() - item.birth) / 1000 / 60 / 60 / 24 / 365).toString()
)
//设置星座
val star = StarUtils.getConstellation(Date(item.birth))
helper.setGone(R.id.tv_constellation, star != null)
.setText(R.id.tv_constellation, star)
helper.setBackgroundRes(
R.id.ll_gender_age,
if (item.gender == 1) R.drawable.shape_65d3f7_corner else R.drawable.shape_ff9cce_corner
)
helper.setImageResource(
R.id.iv_gender,
if (item.gender == 1) R.drawable.ic_home_man else R.drawable.ic_home_woman
)
val tvOnlineText = helper.getView<TextView>(R.id.tv_online_text)
val ivTalk = helper.getView<AppCompatImageView>(R.id.iv_talk)
val svgaLiving = helper.getView<SVGAImageView>(R.id.svga_living)
val llOnline = helper.getView<View>(R.id.ll_online)
val viewOnline = helper.getView<View>(R.id.view_online)
if (item.inRoomUid != 0L) {
ivTalk.isVisible = false
svgaLiving.isVisible = true
viewOnline.isVisible = true
svgaLiving.loadFromAssets("svga/home_living.svga")
tvOnlineText.text = "直播中"
llOnline.setOnClickListener {
AVRoomActivity.start(mContext, item.inRoomUid)
}
} else {
ivTalk.isVisible = true
svgaLiving.isVisible = false
viewOnline.isVisible = false
tvOnlineText.text = "和TA聊"
llOnline.setOnClickListener {
NimP2PMessageActivity.start(mContext, item.uid.toString())
}
}
helper.getView<View>(R.id.iv_avatar).setOnClickListener {
UserInfoActivity.Companion.start(mContext, item.uid)
}
val tvNickname = helper.getView<TextView>(R.id.tv_nickname)
tvNickname.text = item.nick
VipHelper.loadVipNickColor(tvNickname, item.userVipInfoVO, "#282828")
VipHelper.loadVipIcon(helper.getView(R.id.iv_vip_icon), item.userVipInfoVO)
}
override fun onViewAttachedToWindow(holder: BaseViewHolder) {
super.onViewAttachedToWindow(holder)
val svgaLiving = holder.getView<SVGAImageView>(R.id.svga_living)
svgaLiving?.loadFromAssets("svga/home_living.svga")
}
}

View File

@@ -1,25 +1,21 @@
package com.nnbc123.app.home.fragment
import android.view.Gravity
import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels
import com.chuhai.utils.ktx.singleClick
import com.nnbc123.app.R
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.databinding.HomeFriendsFragmentBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.activity.MoreRoomActivity
import com.nnbc123.app.home.dialog.RecommendRoomDialog
import com.nnbc123.app.home.adapter.HomeFriendsGameTabAdapter
import com.nnbc123.app.ui.im.avtivity.NimP2PMessageActivity
import com.nnbc123.app.ui.utils.load
import com.nnbc123.app.ui.webview.CommonWebViewActivity
import com.nnbc123.app.ui.widget.NewFriendsFilterWindow
import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.library.annatation.ActLayoutRes
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* Created by Max on 2023/12/18 17:59
@@ -31,9 +27,25 @@ class HomeFriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
private val homeViewModel: HomeViewModel by activityViewModels()
private val tabAdapter = HomeFriendsGameTabAdapter()
// 过滤条件:性别
private var filterGender: Int? = null
// 过滤条件游戏ID
private val filterGameId: Long? get() = tabAdapter.selectGameId
private var genderPopup: NewFriendsFilterWindow? = null
override fun initiate() {
initResource()
initType()
initTab()
mBinding.tvGender.singleClick {
showFilterGender()
}
mBinding.tvRefresh.singleClick {
homeViewModel.getNewFriendList(filterGender, filterGameId)
}
mBinding.refreshLayout.isEnableLoadmore = false
mBinding.refreshLayout.isEnableOverScrollBounce = false
mBinding.refreshLayout.setOnRefreshListener {
@@ -46,8 +58,18 @@ class HomeFriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
.commitAllowingStateLoss()
}
private fun initType() {
private fun initTab() {
mBinding.rvTab.adapter = tabAdapter
tabAdapter.setOnItemClickListener { adapter, view, position ->
tabAdapter.selectItem(position)
refreshListData()
}
homeViewModel.gameTabLiveData.observe(viewLifecycleOwner)
{
if (!it.isNullOrEmpty()) {
tabAdapter.setNewData(it)
}
}
}
private fun initResource() {
@@ -91,12 +113,59 @@ class HomeFriendsFragment : BaseBindingFragment<HomeFriendsFragmentBinding>() {
}
}
private fun showFilterGender() {
genderPopup = NewFriendsFilterWindow(
mContext,
mBinding.tvGender.text.toString()
).apply {
setOnClickListener {
dismiss()
when (it.id) {
R.id.tv_all -> {
mBinding.tvGender.text = "全部"
filterGender = null
refreshListData()
}
R.id.tv_man -> {
mBinding.tvGender.text = "男生"
filterGender = 1
refreshListData()
}
R.id.tv_woman -> {
mBinding.tvGender.text = "女生"
filterGender = 2
refreshListData()
}
}
}
}
genderPopup?.show(mBinding.tvGender, Gravity.BOTTOM)
}
override fun onResume() {
super.onResume()
loadData()
}
override fun onDestroy() {
super.onDestroy()
if (genderPopup?.isShowing == true) {
genderPopup?.dismiss()
genderPopup = null
}
}
private fun loadData() {
if (homeViewModel.gameTabLiveData.value.isNullOrEmpty()) {
homeViewModel.getHomeGameTab()
}
homeViewModel.getHomeResource()
refreshListData()
}
private fun refreshListData() {
homeViewModel.getNewFriendList(filterGender, filterGameId)
}
}

View File

@@ -1,13 +1,14 @@
package com.nnbc123.app.home.fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.GridLayoutManager
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.HomeFriendsListFragmentBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.HomeFriendsUserAdapter
import com.nnbc123.app.ui.user.UserInfoActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.user.bean.UserInfo
import com.nnbc123.library.annatation.ActLayoutRes
@@ -21,13 +22,17 @@ class HomeFriendsListFragment : BaseBindingFragment<HomeFriendsListFragmentBindi
private val adapter = HomeFriendsUserAdapter()
private val homeViewModel: HomeViewModel by activityViewModels()
override fun initiate() {
adapter.setOnItemClickListener { adapter, view, position ->
(adapter.getItem(position) as? UserInfo)?.let { item ->
UserInfoActivity.Companion.start(mContext, item.uid)
}
}
val rvDelegate = RVDelegate.Builder<UserInfo>()
.setAdapter(adapter)
.setRecyclerView(mBinding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无数据"))
.setLayoutManager(LinearLayoutManager(mContext))
.setLayoutManager(GridLayoutManager(mContext, 2))
.build()
homeViewModel.getNewFriendList()
homeViewModel.newFriendLiveData.observe(this) {
rvDelegate.loadData(it)
}

View File

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

View File

@@ -1,156 +0,0 @@
package com.nnbc123.app.home.fragment
import android.os.Bundle
import android.widget.TextView
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.coorchice.library.utils.LogUtils
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.nnbc123.app.R
import com.nnbc123.app.avroom.adapter.RoomVPAdapter
import com.nnbc123.app.base.BaseFragment
import com.nnbc123.app.databinding.FragmentPartyBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter
import com.nnbc123.app.home.helper.BannerHelper
import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.nnbc123.core.home.bean.HomeTagInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* 音萌首页
*/
class PartyFragment : BaseFragment(), MainMagicIndicatorAdapter.OnItemSelectListener {
private lateinit var mBinding: FragmentPartyBinding
private val mFragments: ArrayList<Fragment> = ArrayList()
private val mTabInfoList: ArrayList<CharSequence> = ArrayList()
private val homeViewModel: HomeViewModel by activityViewModels()
private var currentIndex = 0
companion object {
fun newInstance(): PartyFragment {
val args = Bundle()
val fragment = PartyFragment()
fragment.arguments = args
return fragment
}
}
override fun getRootLayoutId(): Int {
return R.layout.fragment_party
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
override fun onFindViews() {
mBinding = DataBindingUtil.bind(mView)!!
}
override fun initiate() {
homeViewModel.tagLiveData.observe(this) {
it?.let {
onGetHomeTagSuccess(it)
}
}
homeViewModel.partyBannerLiveData.observe(this) {
BannerHelper.setBanner(mBinding.rollView, it) { _, _ ->
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_HOME_BANNER_CLICK, "首页_banner")
}
}
}
override fun onResume() {
super.onResume()
homeViewModel.getTagInfo()
homeViewModel.getPartyBanner()
}
private fun onGetHomeTagSuccess(tagInfoList: MutableList<HomeTagInfo>) {
tagInfoList.add(0,HomeTagInfo("热门"))
var changed = false
val oldTabInfoList: List<CharSequence> = ArrayList<CharSequence>(mTabInfoList)
for (tagInfo in tagInfoList) {
if (!oldTabInfoList.contains(tagInfo.name)) {
changed = true
break
}
}
//只有HomeTagInfo发生改变才刷新数据
if (changed) {
LogUtils.e("$changed:oldTabInfoList")
mTabInfoList.clear()
mFragments.clear()
for (i in tagInfoList.indices) {
//过滤对象是空和没有标签名同时也没有子标签的情况
var title: CharSequence?
var fragment: Fragment?
var name = tagInfoList[i].name
if (name != null) {
name = name.trim { it <= ' ' }
}
title = name
mTabInfoList.add(title)
val tabId: Int = tagInfoList[i].id
fragment = when (title) {
"热门" -> {
PartyRecommendFragment.newInstance()
}
"喜欢" -> {
RoomLikeFragment.newInstance()
}
"小游戏" -> {
RoomGameFragment.newInstance()
}
else -> {
RoomCommonFragment.newInstance(tabId)
}
}
mFragments.add(fragment)
}
val commonNavigator = CommonNavigator(context)
commonNavigator.setTitleWrapContent(true)
commonNavigator.titleMargin = ScreenUtil.dip2px(6.0F)
val magicIndicatorAdapter = MainMagicIndicatorAdapter(context, mTabInfoList)
magicIndicatorAdapter.textSize = 16
magicIndicatorAdapter.minScale = 0.85f
magicIndicatorAdapter.setResId(R.drawable.ic_home_indicator_center)
magicIndicatorAdapter.setOnItemSelectListener(this)
commonNavigator.adapter = magicIndicatorAdapter
mBinding.magicIndicator.navigator = commonNavigator
mBinding.viewPager.offscreenPageLimit = 2
mBinding.viewPager.adapter = RoomVPAdapter(
childFragmentManager,
mFragments
)
ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
onItemSelect(currentIndex, null)
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) homeViewModel.getTagInfo()
}
override fun onItemSelect(position: Int, view: TextView?) {
currentIndex = position
mBinding.viewPager.currentItem = currentIndex
}
}

View File

@@ -1,113 +0,0 @@
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
import com.nnbc123.core.statistic.StatisticManager
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<FragmentPartyHotBinding>() {
companion object {
fun newInstance(): PartyRecommendFragment {
val args = Bundle()
val fragment = PartyRecommendFragment()
fragment.arguments = args
return fragment
}
}
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 = PartyHotAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(GridLayoutManager(mContext, 2, GridLayoutManager.VERTICAL, false))
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无房间"))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerView)
.build()
mAdapter.setOnItemClickListener { _, _, position ->
mAdapter.getItem(position)?.let {
AVRoomActivity.start(context, it.roomUid)
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "通用tab进入房间成功")
}
}
mMoreAdapter = RoomCommonAdapter()
rvMoreDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mMoreAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无房间"))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerMoreView)
.build()
mMoreAdapter.setOnItemClickListener { _, _, position ->
mMoreAdapter.getItem(position)?.let {
AVRoomActivity.start(context, it.uid)
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() {
super.onResume()
loadData(true)
}
@SuppressLint("CheckResult")
fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
homeViewModel.getPartyRecommendRoomList()
homeViewModel.getPartyRecommendRoomMoreList()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -1,100 +0,0 @@
package com.nnbc123.app.home.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomCommonBinding
import com.nnbc123.app.home.RoomCommonViewModel
import com.nnbc123.app.home.adapter.RoomCommonAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import com.nnbc123.core.statistic.StatisticManager
import com.nnbc123.core.statistic.protocol.StatisticsProtocol
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>() {
companion object {
fun newInstance(tabID: Int): RoomCommonFragment {
val args = Bundle()
args.putInt("tab_id", tabID)
val fragment = RoomCommonFragment()
fragment.arguments = args
return fragment
}
}
private val tabID: Int by lazy { arguments?.getInt("tab_id") ?: -1 }
private var pageNum: Int = 1
private val pageSize = 20
private lateinit var mAdapter: RoomCommonAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val roomCommonViewModel: RoomCommonViewModel by viewModels()
override fun init() {
mAdapter = RoomCommonAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setPageSize(20)
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无房间"))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerView)
.build()
mAdapter.setOnItemClickListener { _, _, position ->
mAdapter.getItem(position)?.let {
AVRoomActivity.start(context, it.roomUid)
StatisticManager.Instance()
.onEvent("tab${tabID}_success_room", "通过派对tab下面的房间成功进房的统计")
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, "通用tab进入房间成功")
}
}
mAdapter.setOnLoadMoreListener({
loadData(false)
}, binding.recyclerView)
binding.refreshLayout.setOnRefreshListener {
loadData(true)
}
roomCommonViewModel.commonRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onResume() {
super.onResume()
loadData(true)
}
@SuppressLint("CheckResult")
fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
pageNum = if (isRefresh) 1 else (pageNum + 1)
roomCommonViewModel.getCommonRoom(tabID, pageNum, pageSize)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -1,98 +0,0 @@
package com.nnbc123.app.home.fragment
import android.os.Bundle
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.app.avroom.activity.AVRoomActivity
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomGameBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.RoomGameAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
companion object {
fun newInstance(): RoomGameFragment {
val args = Bundle()
val fragment = RoomGameFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var roomHotAdapter: RoomGameAdapter
private var page = 1
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val pageSize = 20
private val homeViewModel: HomeViewModel by activityViewModels()
override fun init() {
roomHotAdapter = RoomGameAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(roomHotAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间"))
.setLayoutManager(LinearLayoutManager(mContext))
.setRefreshLayout(binding.refreshLayout)
.setPageSize(pageSize)
.build()
roomHotAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
binding.refreshLayout.setOnRefreshListener {
loadData(true)
}
homeViewModel.gameRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
binding.tvMatch.setOnClickListener {
homeViewModel.fastPickGameRoom()
}
homeViewModel.pickRoomLiveData.observe(this) {
it?.let {
AVRoomActivity.start(mContext, it.uid)
}
}
}
override fun onResume() {
super.onResume()
loadData(true)
}
private fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
if (isRefresh) {
page = 1
} else {
page++
}
homeViewModel.getGameRoom(page, pageSize)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -1,75 +0,0 @@
package com.nnbc123.app.home.fragment
import android.os.Bundle
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomHotBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.RoomHotAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomHotFragment : BaseViewBindingFragment<FragmentRoomHotBinding>() {
companion object {
fun newInstance(): RoomHotFragment {
val args = Bundle()
val fragment = RoomHotFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var roomHotAdapter : RoomHotAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private var page = 1
private val pageSize = Int.MAX_VALUE
private val homeViewModel: HomeViewModel by activityViewModels()
override fun init() {
roomHotAdapter = RoomHotAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(roomHotAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无房间"))
.setLayoutManager(LinearLayoutManager(mContext))
.setPageSize(pageSize)
.build()
homeViewModel.hotRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onResume() {
super.onResume()
loadData(true)
}
private fun loadData(isRefresh: Boolean) {
homeViewModel.getHotRoom(page, pageSize)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -1,135 +0,0 @@
package com.nnbc123.app.home.fragment
import android.os.Bundle
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.appbar.AppBarLayout
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomLikeBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.HomeConcernsAdapter
import com.nnbc123.app.home.adapter.RoomLikeAdapter
import com.nnbc123.app.ui.relation.AttentionListActivity
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.home.bean.HomeRoomInfo
import com.nnbc123.core.home.event.RefreshHomeDataEvent
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomLikeFragment : BaseViewBindingFragment<FragmentRoomLikeBinding>() {
companion object {
fun newInstance(): RoomLikeFragment {
val args = Bundle()
val fragment = RoomLikeFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var concernsAdapter : HomeConcernsAdapter
private lateinit var likeRvDelegate: RVDelegate<HomeRoomInfo>
private lateinit var mAdapter : RoomLikeAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private var pageNum = 1
private val pageSize = 20
private val homeViewModel: HomeViewModel by activityViewModels()
override fun init() {
binding.appBarLayout.addOnOffsetChangedListener(
AppBarLayout.OnOffsetChangedListener { _, verticalOffset ->
binding.refreshLayout.isEnabled = verticalOffset == 0
})
concernsAdapter = HomeConcernsAdapter()
likeRvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(concernsAdapter)
.setRecyclerView(binding.rvLike)
.setLayoutManager(GridLayoutManager(mContext,5, GridLayoutManager.VERTICAL, false))
.build()
homeViewModel.concernsLiveData.observe(this) {
likeRvDelegate.setNewData(it)
val isGone = concernsAdapter.data.isNullOrEmpty()
binding.tvMore.isGone = isGone
binding.tvLike.isGone = isGone
binding.rvLike.isGone = isGone
}
mAdapter = RoomLikeAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setPageSize(pageSize)
.setRefreshLayout(binding.refreshLayout)
.setEmptyView(EmptyViewHelper.createEmptyView(mContext, "暂无收藏"))
.setRecyclerView(binding.rvCollect)
.build()
homeViewModel.collectLiveData.observe(this) {
rvDelegate.loadData(it)
}
mAdapter.setOnLoadMoreListener({
loadData(false)
}, binding.rvCollect)
binding.refreshLayout.setOnRefreshListener {
loadData(true)
}
homeViewModel.emptyLiveData.observe(this) {
it?.let {
binding.refreshLayout.isRefreshing = false
binding.clEmpty.isVisible = it
binding.coordinatorLayout.isVisible = !it
}
}
binding.tvGoPlay.setOnClickListener {
(parentFragment as PartyFragment).onItemSelect(1, null)
}
binding.tvMore.setOnClickListener {
AttentionListActivity.start(context)
}
}
override fun onResume() {
super.onResume()
loadData(true)
}
private fun loadData(isRefresh: Boolean) {
if (isRefresh) {
pageNum = 1
binding.refreshLayout.isRefreshing = true
} else {
pageNum++
}
homeViewModel.getCollectRoom(pageNum, pageSize)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
}

View File

@@ -1,45 +0,0 @@
package com.nnbc123.app.home.fragment
import android.os.Bundle
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.nnbc123.app.base.BaseViewBindingFragment
import com.nnbc123.app.common.EmptyViewHelper
import com.nnbc123.app.databinding.FragmentRoomHotBinding
import com.nnbc123.app.home.HomeViewModel
import com.nnbc123.app.home.adapter.RoomNewFriendsAdapter
import com.nnbc123.app.ui.utils.RVDelegate
import com.nnbc123.core.user.bean.UserInfo
class RoomNewFriendsFragment : BaseViewBindingFragment<FragmentRoomHotBinding>() {
companion object {
fun newInstance(): RoomNewFriendsFragment {
val args = Bundle()
val fragment = RoomNewFriendsFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var roomHotAdapter: RoomNewFriendsAdapter
private lateinit var rvDelegate: RVDelegate<UserInfo>
private val homeViewModel: HomeViewModel by activityViewModels()
override fun init() {
roomHotAdapter = RoomNewFriendsAdapter()
rvDelegate = RVDelegate.Builder<UserInfo>()
.setAdapter(roomHotAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(context, "暂无新朋友"))
.setLayoutManager(LinearLayoutManager(mContext))
.build()
homeViewModel.getNewFriendList()
homeViewModel.newFriendLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
}

View File

@@ -193,7 +193,8 @@ class AnchorCardView @JvmOverloads constructor(
}
}
private fun toggleAudio(list: List<String?>) {
private fun toggleAudio(list: List<String?>?) {
if (list == null) return
if (ListUtils.isListEmpty(list)) return
var url: String? = ""
for (s in list) {

View File

@@ -26,12 +26,12 @@ class SkillCardAdapter(private val context: Context) :
helper.setText(R.id.tv_desc, buffer.toString())
val radius = UIUtil.dip2px(context, 8.0)
val drawable = when (item?.cardId) {
1 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#EEF2FF"))
2 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#FEF5E8"))
3 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#F9ECFF"))
4 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#E9FFF4"))
5 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#F2FFE0"))
6 -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#FFE7EF"))
1L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#EEF2FF"))
2L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#FEF5E8"))
3L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#F9ECFF"))
4L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#E9FFF4"))
5L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#F2FFE0"))
6L -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#FFE7EF"))
else -> GradientDrawableCreator.createDrawable(radius, Color.parseColor("#FFE4FB"))
}
helper.itemView.background = drawable

View File

@@ -82,7 +82,7 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
* 技能卡
*/
private fun initSkillCardList(list: List<UserInfoSkillEntity>) {
val audio = list.find { it.cardId == 8 }
val audio = list.find { it.cardId == 8L }
val newList: MutableList<UserInfoSkillEntity> = list.toMutableList()
if (audio != null) {
(activity as? UserInfoActivity)?.initVoiceShow(audio)

View File

@@ -34,21 +34,27 @@ import java.net.URL
fun ImageView.load(
url: String?,
@Dimension(unit = DP) round: Float = 0f,
@DrawableRes defaultRes: Int = R.drawable.default_cover
@DrawableRes defaultRes: Int? = R.drawable.default_cover
) {
if (context.isDestroyed()) return
if (url.isNullOrEmpty()) {
load(defaultRes)
if (defaultRes != null) {
load(defaultRes)
} else {
setImageDrawable(null)
}
return
}
GlideApp.with(context).load(url)
.dontAnimate()
.placeholder(defaultRes)
.error(defaultRes)
.apply {
if (defaultRes != null) {
placeholder(defaultRes)
error(defaultRes)
}
if (round != 0f) transform(CenterCrop(), RoundedCorners(ScreenUtil.dip2px(round)))
}
.into(this)

View File

@@ -147,9 +147,9 @@ public class MainRedPointTab extends RelativeLayout {
case MainTabType.TAB_TYPE_SQUARE:
resId = select ? R.mipmap.ic_main_tab_find_pressed : R.mipmap.ic_main_tab_find;
break;
case MainTabType.TAB_TYPE_PARTY:
resId = select ? R.mipmap.ic_main_tab_party_pressed : R.mipmap.ic_main_tab_party;
break;
// case MainTabType.TAB_TYPE_PARTY:
// resId = select ? R.mipmap.ic_main_tab_party_pressed : R.mipmap.ic_main_tab_party;
// break;
case MainTabType.TAB_TYPE_MSG:
resId = select ? R.mipmap.ic_main_tab_msg_pressed : R.mipmap.ic_main_tab_msg;
break;

View File

@@ -25,9 +25,9 @@ import java.util.List;
*/
public class MainTabLayout extends LinearLayout implements View.OnClickListener {
private final List<MainRedPointTab> tabViewList = new ArrayList<>(5);
private final List<MainRedPointTab> tabViewList = new ArrayList<>(4);
private MainRedPointTab homeTab;
private MainRedPointTab partyTab;
// private MainRedPointTab partyTab;
private MainRedPointTab squareTab;
private MainRedPointTab msgTab;
private MainRedPointTab meTab;
@@ -60,24 +60,24 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
squareTab = findViewById(R.id.main_square_tab);
msgTab = findViewById(R.id.main_msg_tab);
partyTab = findViewById(R.id.main_party_tab);
// partyTab = findViewById(R.id.main_party_tab);
homeTab = findViewById(R.id.main_home_tab);
meTab = findViewById(R.id.main_me_tab);
homeTab.setOnClickListener(this);
meTab.setOnClickListener(this);
partyTab.setOnClickListener(this);
// partyTab.setOnClickListener(this);
squareTab.setOnClickListener(this);
msgTab.setOnClickListener(this);
tabViewList.add(homeTab);
tabViewList.add(partyTab);
// tabViewList.add(partyTab);
tabViewList.add(squareTab);
tabViewList.add(msgTab);
tabViewList.add(meTab);
}
public void setMainTabInfoList(@NonNull @Size(5) List<MainTabInfo> mainTabInfoList) {
public void setMainTabInfoList(@NonNull @Size(4) List<MainTabInfo> mainTabInfoList) {
this.mainTabInfoList = mainTabInfoList;
for (int i = 0; i < mainTabInfoList.size(); i++) {
MainTabInfo mainTabInfo = mainTabInfoList.get(i);
@@ -112,19 +112,19 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
select(mainTabInfoList.get(0).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_FIRST_TAB, "首页tab");
break;
case R.id.main_party_tab:
select(mainTabInfoList.get(1).getTabType());
break;
// case R.id.main_party_tab:
// select(mainTabInfoList.get(1).getTabType());
// break;
case R.id.main_square_tab:
select(mainTabInfoList.get(2).getTabType());
select(mainTabInfoList.get(1).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_SQUARE_DONG_TAI_CLICK, "点击广场动态页");
break;
case R.id.main_msg_tab:
select(mainTabInfoList.get(3).getTabType());
select(mainTabInfoList.get(2).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MESSAGE, "消息页");
break;
case R.id.main_me_tab:
select(mainTabInfoList.get(4).getTabType());
select(mainTabInfoList.get(3).getTabType());
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_HOME_MINE_TAB, "我的tab");
break;
}
@@ -135,7 +135,7 @@ public class MainTabLayout extends LinearLayout implements View.OnClickListener
if (mLastPosition == tabType) return;
squareTab.select(tabType == MainTabType.TAB_TYPE_SQUARE);
msgTab.select(tabType == MainTabType.TAB_TYPE_MSG);
partyTab.select(tabType == MainTabType.TAB_TYPE_PARTY);
// partyTab.select(tabType == MainTabType.TAB_TYPE_PARTY);
homeTab.select(tabType == MainTabType.TAB_TYPE_HOME);
meTab.select(tabType == MainTabType.TAB_TYPE_ME);
if (mOnTabClickListener != null) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

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

View File

@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
android:paddingTop="54dp">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
app:elevation="0dp"
app:layout_behavior="com.nnbc123.app.ui.widget.AppBarLayoutBehavior">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="@color/transparent"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_roll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15">
<com.nnbc123.app.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="15dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="345:80"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:rollviewpager_hint_gravity="left"
app:rollviewpager_hint_paddingBottom="8dp"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="wrap_content"
android:layout_height="31dp"
android:layout_marginStart="13dp"
android:layout_marginBottom="6dp" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
</layout>

View File

@@ -1,47 +0,0 @@
<?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">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<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_marginStart="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_12"
android:nestedScrollingEnabled="false"
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:nestedScrollingEnabled="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -1,37 +0,0 @@
<?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">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false" />
<com.nnbc123.library.widget.DrawableCenterTextView
android:id="@+id/tv_match"
android:layout_width="118dp"
android:layout_height="48dp"
android:layout_gravity="bottom|end"
android:layout_marginEnd="24dp"
android:layout_marginBottom="35dp"
android:background="@drawable/bg_quick_match"
android:drawableStart="@drawable/ic_quick_match_left"
android:gravity="center"
android:paddingBottom="2dp"
android:text="快速匹配"
android:textColor="@color/white"
android:textSize="16dp" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:orientation="vertical" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>

View File

@@ -1,151 +0,0 @@
<?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">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/cl_empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:gravity="center"
android:text="@string/home_like_hint"
android:textColor="#b3333333"
android:textSize="14sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="68dp"
android:src="@drawable/icon_common_failure" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="有许多有趣的人和房间等着你来发掘哦~"
android:textColor="#ff333333"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_go_play"
android:layout_width="240dp"
android:layout_height="40dp"
android:layout_marginTop="40dp"
android:background="@drawable/common_btn_bg"
android:gravity="center"
android:includeFontPadding="false"
android:text="交友畅聊"
android:textColor="#ffffffff"
android:textSize="16sp" />
</LinearLayout>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
app:elevation="0dp"
app:layout_behavior="com.nnbc123.app.ui.widget.AppBarLayoutBehavior">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="@color/transparent"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="12dp"
android:text="关注的人"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:drawableRight="@drawable/arrow_right"
android:text="更多"
android:textColor="#b3333333"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/tv_like"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_like" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_like"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:clipToPadding="true"
android:paddingStart="11dp"
android:paddingEnd="11dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_like" />
<TextView
android:id="@+id/tv_collect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="12dp"
android:text="收藏的房间"
android:textColor="#ff333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_like"
app:layout_goneMarginTop="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_collect"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -71,15 +71,15 @@
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_type"
android:id="@+id/rv_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_12"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_6"
android:orientation="horizontal"
android:paddingHorizontal="@dimen/dp_10"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/iv_resource_0"
tools:layout_height="80dp" />
app:layout_constraintDimensionRatio="375:69"
app:layout_constraintTop_toBottomOf="@id/iv_resource_0" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -116,12 +116,12 @@
android:text="换一换"
android:textColor="#696D7A"
android:textSize="@dimen/dp_11"
app:layout_constraintBottom_toBottomOf="@id/tv_all"
app:layout_constraintEnd_toStartOf="@id/tv_all"
app:layout_constraintTop_toTopOf="@id/tv_all" />
app:layout_constraintBottom_toBottomOf="@id/tv_gender"
app:layout_constraintEnd_toStartOf="@id/tv_gender"
app:layout_constraintTop_toTopOf="@id/tv_gender" />
<com.nnbc123.library.widget.DrawableCenterTextView
android:id="@+id/tv_all"
android:id="@+id/tv_gender"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_22"
android:layout_marginEnd="@dimen/dp_15"

View File

@@ -0,0 +1,19 @@
<?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="wrap_content"
android:layout_height="match_parent"
tools:background="#F5F5F7"
tools:layout_height="69dp">
<ImageView
android:id="@+id/iv_cover"
android:layout_width="0dp"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_constraintDimensionRatio="86:69"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/default_cover" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -6,6 +6,8 @@
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="@dimen/dp_11"
android:layout_marginTop="@dimen/dp_5"
android:clipToPadding="false"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"

View File

@@ -4,6 +4,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_4"
android:layout_marginVertical="@dimen/dp_5"
tools:background="#F5F5F7">
<com.nnbc123.app.common.widget.RectRoundImageView
@@ -39,13 +41,14 @@
android:visibility="gone"
tools:visibility="visible" />
<ImageView
android:id="@+id/iv_state_live"
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_state_live"
android:layout_width="@dimen/dp_10"
android:layout_height="wrap_content"
android:layout_height="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginEnd="@dimen/dp_3"
android:visibility="gone" />
android:visibility="gone"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_state"
@@ -63,10 +66,10 @@
android:layout_height="16dp"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_5"
android:src="@drawable/home_ic_partner"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar"
tools:src="@drawable/default_cover"
tools:visibility="visible" />
<ImageView
@@ -94,10 +97,11 @@
android:id="@+id/iv_audio_btn"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_1"
android:src="@drawable/home_ic_audio_play" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/liv_user"
android:id="@+id/svga_audio"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_1"
@@ -156,7 +160,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="tv_game_name,iv_game_icon"
app:constraint_referenced_ids="tv_game_name,iv_game_icon,iv_partner"
tools:visibility="visible" />
<TextView
@@ -171,18 +175,23 @@
android:textSize="@dimen/dp_12"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/layout_room_info"
app:layout_constraintEnd_toStartOf="@id/iv_constellation"
app:layout_constraintEnd_toStartOf="@id/tv_constellation"
app:layout_constraintStart_toStartOf="@id/iv_content_bg"
app:layout_constraintTop_toTopOf="@id/iv_content_bg"
app:layout_constraintVertical_chainStyle="packed"
app:layout_goneMarginBottom="@dimen/dp_9"
tools:text="Name" />
<ImageView
android:id="@+id/iv_constellation"
android:layout_width="39dp"
android:layout_height="15dp"
<TextView
android:id="@+id/tv_constellation"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/base_shape_339168fa_8dp"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_8"
android:textColor="#9168FA"
android:textSize="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="@id/tv_name"
app:layout_constraintEnd_toEndOf="@id/iv_content_bg"
app:layout_constraintTop_toTopOf="@id/tv_name"
@@ -211,7 +220,7 @@
android:src="@drawable/home_ic_room" />
<com.nnbc123.app.avroom.widget.FixRoomTitleTextView
android:id="@+id/room_title"
android:id="@+id/tv_room_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_2"

View File

@@ -1,70 +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/container_item_room_history"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
tools:background="@color/blue">
<FrameLayout
android:id="@+id/fl_room_history_avatar_container"
android:layout_width="56dp"
android:layout_height="56dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/civ_room_avatar"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_gravity="center_horizontal"
tools:src="@drawable/default_avatar" />
<View
android:id="@+id/view_avatar_bg"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@drawable/bg_avatar_concerns" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="3dp"
android:gravity="center">
<View
android:id="@+id/view_living"
android:layout_width="8dp"
android:layout_height="7dp"
android:background="@drawable/anim_concerns_living_icon" />
<TextView
android:id="@+id/tv_live"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:text="直播"
android:textColor="@color/white"
android:textSize="8sp" />
</LinearLayout>
</FrameLayout>
<TextView
android:id="@+id/tv_room_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:textColor="@color/color_333333"
android:textSize="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_room_history_avatar_container"
tools:text="音萌音萌" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,143 +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="余生点唱歌曲交友房间" />
<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="狼人杀" />
<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_goneMarginStart="0dp"
android:layout_marginTop="10dp"
app:layout_constraintStart_toEndOf="@id/iv_room_tag"
app:layout_constraintTop_toBottomOf="@id/tv_room_title">
<com.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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="余生点唱歌曲交友房间" />
<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="想和大叫聊一聊,有人来聊聊吗?" />
<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="狼人杀" />
<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.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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,160 +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="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_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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="-6dp"
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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="-6dp"
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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="-6dp"
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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="-6dp"
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="@dimen/dp_18"
android:layout_height="@dimen/dp_18"
android:layout_marginStart="-6dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="1px" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_in_pk"
android:layout_width="40dp"
android:layout_height="16dp"
android:background="@drawable/bg_pk"
android:gravity="center"
android:visibility="gone"
android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_2"
app:layout_constraintEnd_toEndOf="@+id/iv_room_image"
app:layout_constraintBottom_toTopOf="@+id/tv_room_title"
tools:visibility="visible" />
<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

@@ -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.nnbc123.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,185 +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="6dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="6dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/bg_home_common_item0"
app:layout_constraintDimensionRatio="690: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="0dp"
android:layout_height="0dp"
android:layout_marginStart="12dp"
android:scaleType="centerCrop"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintHeight_percent="0.68"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:riv_corner_radius="8dp" />
<TextView
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="12dp"
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/iv_room_image"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_room_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="50dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_normal_282828"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/ll_tag"
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintStart_toEndOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:layout_constraintVertical_chainStyle="packed"
tools:text="余生点唱歌曲交友房间" />
<LinearLayout
android:id="@+id/ll_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/ll_avatar"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title">
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_marginEnd="5dp"
tools:src="@drawable/tag_101" />
<TextView
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="10dp"
android:visibility="gone"
tools:text="我是"
tools:visibility="visible" />
</LinearLayout>
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:drawableStart="@drawable/ic_home_hot_hot"
android:drawablePadding="2dp"
android:gravity="bottom"
android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="12sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/ll_avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/ll_avatar"
tools:text="266" />
<LinearLayout
android:id="@+id/ll_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/ll_tag">
<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.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,180 +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="96dp"
android:layout_marginEnd="10dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="96dp"
android:layout_marginStart="42dp"
android:background="@drawable/bg_home_game_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="15dp"
android:layout_marginTop="8dp"
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_common_pk"
android:gravity="center"
android:includeFontPadding="false"
android:text="PK中"
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:ellipsize="end"
android:includeFontPadding="false"
android:maxLines="1"
android:textColor="@color/text_primary"
android:textSize="14dp"
android:textStyle="bold"
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="余生点唱歌曲交友房间" />
<TextView
android:id="@+id/tv_room_game"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:includeFontPadding="false"
android:textSize="10dp"
app:layout_constraintBottom_toTopOf="@id/fl_avatar"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_title"
tools:text="你画我猜" />
<View
android:id="@+id/view_line"
android:layout_width="1px"
android:layout_height="9dp"
android:layout_marginStart="4dp"
android:background="#FFD8D8D8"
app:layout_constraintBottom_toBottomOf="@id/tv_room_game"
app:layout_constraintStart_toEndOf="@id/tv_room_game"
app:layout_constraintTop_toTopOf="@id/tv_room_game" />
<TextView
android:id="@+id/tv_game_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:includeFontPadding="false"
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="游戏中" />
<FrameLayout
android:id="@+id/fl_avatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginEnd="18dp"
android:layout_marginBottom="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_room_game">
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_0"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_1"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="28dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_2"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="56dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_3"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="84dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar_4"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="112dp"
android:src="@drawable/default_avatar"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
</FrameLayout>
<ImageView
android:id="@+id/tv_go_room"
android:layout_width="68dp"
android:layout_height="38dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="15dp"
android:gravity="center"
android:src="@drawable/ic_home_game_go_room"
android:text="进房"
android:textColor="#ffffffff"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,161 +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="6dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="6dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="90dp"
android:layout_marginStart="15dp"
android:background="@drawable/shape_room_hot_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_room_image"
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<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="PK中"
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="#161958"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/tv_id"
app:layout_constraintStart_toEndOf="@id/iv_room_image"
app:layout_constraintTop_toTopOf="@id/iv_room_image"
app:layout_constraintVertical_chainStyle="packed"
tools:text="余生点唱歌曲交友房间" />
<ImageView
android:id="@+id/iv_room_tag"
android:layout_width="wrap_content"
android:layout_height="14dp"
android:layout_marginTop="3dp"
app:layout_constraintBottom_toBottomOf="@id/iv_room_image"
app:layout_constraintStart_toStartOf="@id/tv_room_title"
app:layout_constraintTop_toBottomOf="@id/tv_id"
tools:src="@drawable/tag_101"
tools:text="聊天" />
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:textColor="#8A8CAB"
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="ID:1234" />
<TextView
android:id="@+id/tv_online_number"
android:layout_width="wrap_content"
android:layout_height="26dp"
android:layout_marginBottom="10dp"
android:background="@drawable/shape_room_hot_tag_bg"
android:drawableStart="@drawable/ic_home_hot_hot"
android:drawablePadding="2dp"
android:gravity="center"
android:includeFontPadding="false"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:textColor="#3D3D3D"
android:textSize="14sp"
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="12dp"
android:layout_marginBottom="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="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="18dp"
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="17dp"
android:layout_height="22dp"
android:layout_marginStart="36dp"
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="54dp"
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="72dp"
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="PK中"
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="余生点唱歌曲交友房间" />
<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.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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.nnbc123.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,215 +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_marginTop="6dp"
android:layout_marginBottom="6dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="15dp"
android:background="@drawable/shape_room_new_friends_bg"
app:layout_constraintDimensionRatio="335:93"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="parent" />
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginStart="@dimen/dp_14"
android:src="@drawable/default_cover"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_game"
android:src="@drawable/ic_sparring_partner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/iv_avatar"
app:layout_constraintStart_toStartOf="@+id/iv_avatar"
app:layout_constraintEnd_toEndOf="@+id/iv_avatar"
tools:visibility="visible"/>
<View
android:id="@+id/view_online"
android:layout_width="@dimen/dp_11"
android:layout_height="@dimen/dp_11"
android:layout_marginEnd="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_2"
android:background="@drawable/shape_home_online"
app:layout_constraintTop_toTopOf="@id/iv_avatar"
app:layout_constraintEnd_toEndOf="@id/iv_avatar" />
<ImageView
android:id="@+id/iv_vip_icon"
android:layout_width="20dp"
android:layout_height="16dp"
android:layout_marginStart="12dp"
app:layout_constraintBottom_toBottomOf="@id/tv_nickname"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/tv_nickname" />
<TextView
android:id="@+id/tv_nickname"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:layout_marginEnd="20dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/text_normal_282828"
android:textSize="15sp"
app:layout_constraintBottom_toTopOf="@id/ll_gender_age"
app:layout_constraintEnd_toStartOf="@id/ll_game_type"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/iv_vip_icon"
app:layout_constraintTop_toTopOf="@id/view_bg"
app:layout_constraintVertical_chainStyle="packed"
app:layout_goneMarginStart="12dp"
tools:text="余生点唱歌曲交友房间萨达萨达萨达" />
<LinearLayout
android:id="@+id/ll_gender_age"
android:layout_width="32dp"
android:layout_height="15dp"
android:layout_marginStart="12dp"
android:layout_marginTop="6dp"
android:background="@drawable/shape_ff9cce_corner"
android:gravity="center_vertical"
app:layout_constraintBottom_toTopOf="@id/tv_desc"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toBottomOf="@id/tv_nickname">
<ImageView
android:id="@+id/iv_gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="5dp"
android:paddingEnd="0dp"
android:src="@drawable/ic_home_woman" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:textColor="@color/white"
android:textSize="@dimen/sp_11"
tools:text="22" />
</LinearLayout>
<TextView
android:id="@+id/tv_constellation"
android:layout_width="38dp"
android:layout_height="15dp"
android:layout_marginStart="5dp"
android:background="@drawable/shape_f6f7f9_corner"
android:gravity="center"
android:textColor="#ffb3b5c4"
android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="@id/ll_gender_age"
app:layout_constraintStart_toEndOf="@id/ll_gender_age"
app:layout_constraintTop_toTopOf="@id/ll_gender_age"
tools:text="巨蟹座" />
<TextView
android:id="@+id/tv_desc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:lines="1"
android:text="一起来玩呀"
android:textColor="#ffbdbfd0"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toStartOf="@id/ll_online"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toBottomOf="@id/ll_gender_age" />
<LinearLayout
android:id="@+id/ll_game_type"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:background="@drawable/bg_game_type"
android:paddingTop="@dimen/dp_3"
android:paddingBottom="@dimen/dp_3"
android:paddingStart="@dimen/dp_10"
android:paddingEnd="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_10"
app:layout_constraintTop_toTopOf="@id/tv_nickname"
app:layout_constraintBottom_toBottomOf="@+id/tv_nickname"
app:layout_constraintEnd_toEndOf="@+id/view_bg"
tools:visibility="visible">
<com.nnbc123.app.common.widget.CircleImageView
android:id="@+id/iv_game_icon"
tools:src="@drawable/ic_king"
android:layout_marginEnd="@dimen/dp_2"
android:layout_width="14dp"
android:layout_height="14dp"/>
<com.coorchice.library.SuperTextView
android:id="@+id/tv_game_type"
tools:text="王者荣耀|英雄联盟"
android:textSize="@dimen/sp_10"
android:textColor="@color/color_696D7A"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:visibility="visible"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_online"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_14"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/view_bg"
app:layout_constraintEnd_toEndOf="@id/view_bg">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_talk"
android:layout_width="20dp"
android:layout_height="18dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/ic_new_friends_msg"
android:visibility="gone" />
<com.opensource.svgaplayer.SVGAImageView
android:id="@+id/svga_living"
android:layout_width="20dp"
android:layout_height="18dp"
android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/tv_online_text"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:gravity="center"
android:includeFontPadding="false"
android:text="直播中"
android:textColor="#ffbdbfd0"
android:textSize="@dimen/sp_11" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -14,13 +14,13 @@
android:layout_gravity="bottom"
android:layout_weight="1" />
<com.nnbc123.app.ui.widget.MainRedPointTab
android:id="@+id/main_party_tab"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
/>
<!-- <com.nnbc123.app.ui.widget.MainRedPointTab-->
<!-- android:id="@+id/main_party_tab"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_gravity="center"-->
<!-- android:layout_weight="1"-->
<!-- />-->
<com.nnbc123.app.ui.widget.MainRedPointTab
android:id="@+id/main_square_tab"

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingTop="6dp" />

View File

@@ -0,0 +1,20 @@
package com.nnbc123.core.home.bean
import java.io.Serializable
/**
* Created by Max on 2023/12/25 10:35
* Desc:首页游戏分类
**/
data class HomeGameTab(
val createTime: String? = null,
val erbanNoStr: String? = null,
val gameId: Long? = null,
val id: Long? = null,
val onClick: String? = null,
val onUnclick: String? = null,
val seqNo: Long? = null,
val tabName: String? = null,
val uidStr: String? = null,
val updateTime: String? = null
) : Serializable

View File

@@ -3,9 +3,9 @@ package com.nnbc123.core.home.bean;
public interface MainTabType {
//tabType(1-派对2-广场3-赛事4-消息5-我的)
int TAB_TYPE_HOME = 1;
int TAB_TYPE_PARTY = 2;
int TAB_TYPE_SQUARE = 3;
int TAB_TYPE_MSG = 4;
int TAB_TYPE_ME = 5;
// int TAB_TYPE_PARTY = 2;
int TAB_TYPE_SQUARE = 2;
int TAB_TYPE_MSG = 3;
int TAB_TYPE_ME = 4;
int TAB_TYPE_PM_MODE = 6;
}

View File

@@ -227,9 +227,25 @@ object HomeModel : BaseModel() {
api.getServiceGiftRecord()
}
suspend fun getNewFriendList(gender: Int?): List<UserInfo>? =
suspend fun getNewFriendList(gender: Int?, gameId: Long?): List<UserInfo>? =
launchRequest {
api.getNewFriendList(gender)
api.getNewFriendList(gender, gameId)
}
suspend fun getHomeGameTabListByLocal(): MutableList<HomeGameTab>? {
return DemoCache.readHomeGameTabList()
}
suspend fun getHomeGameTabList(): MutableList<HomeGameTab>? =
launchRequest {
val result = api.getHomeGameTabList()
if (result.isSuccess) {
withContext(Dispatchers.Main) {
DemoCache.saveHomeGameTabList(result.data)
}
}
result
}
private interface Api {
@@ -489,7 +505,14 @@ object HomeModel : BaseModel() {
* @return
*/
@GET("/home/newFriend")
suspend fun getNewFriendList(@Query("gender") gender: Int?): ServiceResult<List<UserInfo>>
suspend fun getNewFriendList(@Query("gender") gender: Int?, @Query("gameId") gameId: Long?): ServiceResult<List<UserInfo>>
/**
* 发现新朋友
*
* @return
*/
@GET("/home/game/tab/list")
suspend fun getHomeGameTabList(): ServiceResult<MutableList<HomeGameTab>>
}
}

View File

@@ -7,6 +7,7 @@ import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.nnbc123.core.home.bean.HomeGameTab;
import com.nnbc123.core.home.bean.ResourceInfo;
import com.nnbc123.xchat_android_constants.XChatConstants;
import com.nnbc123.core.auth.AuthModel;
@@ -66,6 +67,7 @@ public class DemoCache {
private static final String KEY_NEW_GIFT_TYPE_TIP = "key_new_gift_type_tip";
private static final String KEY_NEW_GIFT_TYPE_TIP_INDICATOR = "key_new_gift_type_tip_indicator";
private static final String KEY_HOME_RESOURCE_LIST = "key_home_resource_list";
private static final String KEY_HOME_GAME_TAB_LIST = "key_home_game_tab_list";
private static StatusBarNotificationConfig notificationConfig;
@@ -389,7 +391,9 @@ public class DemoCache {
public static void saveHomeResourceList(List<ResourceInfo> value) {
SharedPreferenceUtils.put(KEY_HOME_RESOURCE_LIST, new Gson().toJson(value));
if (value != null) {
SharedPreferenceUtils.put(KEY_HOME_RESOURCE_LIST, new Gson().toJson(value));
}
}
public static List<ResourceInfo> readHomeResourceList() {
@@ -403,4 +407,23 @@ public class DemoCache {
return null;
}
}
public static void saveHomeGameTabList(List<HomeGameTab> value) {
if (value != null) {
SharedPreferenceUtils.put(KEY_HOME_GAME_TAB_LIST, new Gson().toJson(value));
}
}
public static List<HomeGameTab> readHomeGameTabList() {
try {
String jsonString = String.valueOf(SharedPreferenceUtils.get(KEY_HOME_GAME_TAB_LIST, ""));
if (TextUtils.isEmpty(jsonString)) return null;
return new Gson().fromJson(jsonString,
new TypeToken<List<HomeGameTab>>() {
}.getType());
} catch (Exception e) {
return null;
}
}
}

View File

@@ -157,13 +157,13 @@ public class InitialModel extends BaseModel implements IInitialModel {
MainTabType.TAB_TYPE_HOME,
null
),
new MainTabInfo(
"",
"",
"派对",
MainTabType.TAB_TYPE_PARTY,
null
),
// new MainTabInfo(
// "",
// "",
// "派对",
// MainTabType.TAB_TYPE_PARTY,
// null
// ),
new MainTabInfo(
"",
"",

View File

@@ -216,6 +216,58 @@ public class UserInfo implements Serializable {
private long inRoomUid;
private UserInfoSkillEntity voiceCard;
private boolean inOnline;
private String roomTitle;
/**
* 声音是否正在播放, RecycleView 记录状态
*/
private boolean voicePlaying;
private boolean lock;
public boolean isLock() {
return lock;
}
public void setLock(boolean lock) {
this.lock = lock;
}
public boolean isVoicePlaying() {
return voicePlaying;
}
public void setVoicePlaying(boolean voicePlaying) {
this.voicePlaying = voicePlaying;
}
public String getRoomTitle() {
return roomTitle;
}
public void setRoomTitle(String roomTitle) {
this.roomTitle = roomTitle;
}
public boolean isInOnline() {
return inOnline;
}
public void setInOnline(boolean inOnline) {
this.inOnline = inOnline;
}
public UserInfoSkillEntity getVoiceCard() {
return voiceCard;
}
public void setVoiceCard(UserInfoSkillEntity voiceCard) {
this.voiceCard = voiceCard;
}
public UserInfo() {
}

View File

@@ -20,9 +20,46 @@ import java.io.Serializable
}
*/
data class UserInfoSkillEntity(
val cardId: Int,
val cardId: Long?,
val icon: String?,
val id: Int,
val name: String,
val propVals: List<String>
) : Serializable
val id: Long?,
val name: String?,
val propVals: List<String>?
) : Serializable {
private var url: String? = null
private var duration: Long? = null
private var parsed = false
private fun checkParse() {
if (!parsed) {
//费解,为何使用这样的结构存储数据
propVals?.forEach {
if (url == null && it.startsWith("http")) {
url = it
} else if (duration == null && it.toLongOrNull() != null) {
duration = it.toLongOrNull()
}
}
parsed = true
}
}
/**
* 获取音频地址
*/
fun getAudioUrl(): String? {
checkParse()
return url
}
/**
* 获取时长(秒?)
*/
fun getAudioDuration(): Long? {
checkParse()
return duration
}
}