feat:删除首页历史无用代码

feat:调整首页刷新机制(去掉定时刷新任务、改为每次可见刷新)
feat:完善首页-我的-房间信息展示
This commit is contained in:
max
2024-06-17 18:20:43 +08:00
parent 0caee6e191
commit 3c75f0e86a
32 changed files with 309 additions and 1621 deletions

View File

@@ -91,7 +91,6 @@ import com.chwl.core.channel_page.model.ChannelPageModel;
import com.chwl.core.community.event.SquareTaskEvent;
import com.chwl.core.community.event.UnReadCountEvent;
import com.chwl.core.home.bean.MainTabType;
import com.chwl.core.home.event.RefreshHomeDataEvent;
import com.chwl.core.home.event.VisitorUnreadCountEvent;
import com.chwl.core.home.model.GameHomeModel;
import com.chwl.core.home.model.HomeModel;
@@ -126,10 +125,6 @@ import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
/**
* @author Administrator
@@ -252,11 +247,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
EventBus.getDefault().register(this);
otherModelInit();
Observable.interval(60, TimeUnit.SECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> EventBus.getDefault().post(new RefreshHomeDataEvent()));
homeViewModel.getAnchorInfoLiveData().observe(this, anchorInfo -> {
if (anchorInfo != null) {
anchorCardView.setAnchorInfo(anchorInfo);

View File

@@ -0,0 +1,22 @@
package com.chwl.app.home
import androidx.lifecycle.MutableLiveData
import com.chwl.app.base.BaseViewModel
import com.chwl.core.auth.AuthModel
import com.chwl.core.room.bean.RoomInfo
import com.chwl.core.room.model.AvRoomModel
class HomeMeViewModel : BaseViewModel() {
val roomInfoLiveData = MutableLiveData<RoomInfo>()
fun getMyRoomInfo() {
addDisposable(
AvRoomModel.get().requestRoomInfo(AuthModel.get().currentUid.toString())
.subscribe({
roomInfoLiveData.postValue(it)
}, {
})
)
}
}

View File

@@ -1,184 +0,0 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.application.IReportConstants
import com.chwl.app.application.ReportManager
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.avroom.dialog.CreateRoomDialog
import com.chwl.app.base.BaseActivity
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentAccompanyBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeChatAdapter
import com.chwl.app.home.adapter.RoomNewFriendsAdapter
import com.chwl.app.home.helper.OpenRoomHelper
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import com.chwl.core.user.UserModel
import com.chwl.core.user.bean.UserInfo
import com.chwl.core.user.event.LoginUserInfoUpdateEvent
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
首页
*/
class AccompanyFragment : BaseViewBindingFragment<FragmentAccompanyBinding>() {
private lateinit var charAdapter: HomeChatAdapter
private lateinit var roomNewFriendsAdapter: RoomNewFriendsAdapter
private val homeViewModel: HomeViewModel by activityViewModels()
private lateinit var rvDelegate: RVDelegate<UserInfo>
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
initRefreshView()
initChatTab()
initHotRoomTab()
showGameGuide()
binding.ivGameGuide.setOnClickListener {
//首页_扩列聊天-创建游戏房
ReportManager.get().reportEvent(
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.NINE),
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
)
)
CreateRoomDialog().apply { setGameVisible() }.show(context)
}
}
private fun initRefreshView() {
binding.refreshLayout.setOnRefreshListener {
binding.refreshLayout.finishRefresh()
EventBus.getDefault().post(RefreshHomeDataEvent())
}
binding.refreshLayout.isEnableLoadmore = false
binding.refreshLayout.isEnableOverScrollBounce = false
}
private fun initChatTab() {
charAdapter = HomeChatAdapter()
charAdapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val homePlayInfo: HomeRoomInfo? = charAdapter.getItem(position)
if (homePlayInfo != null) {
//首页_扩列聊天-用户房间
ReportManager.get().reportEvent(
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.SEVEN),
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
)
)
AVRoomActivity.startForFromType(
mContext,
homePlayInfo.uid,
AVRoomActivity.FROM_TYPE_RECOMMEND
)
}
}
binding.mRecyclerChat.adapter = charAdapter
binding.mLiCreateRoom.setOnClickListener {
//首页_扩列聊天-创建普通房
ReportManager.get().reportEvent(
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.EIGHT),
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
)
)
OpenRoomHelper.openRoom(context as BaseActivity?)
}
homeViewModel.homePlayInfoData.observe(this) {
it?.let {
if (it.isNotEmpty()) {
binding.mLiCreateRoom.visibility = View.GONE
binding.nsHost.visibility = View.VISIBLE
charAdapter.setNewData(it)
} else {
binding.mLiCreateRoom.visibility = View.VISIBLE
binding.nsHost.visibility = View.GONE
}
}
}
}
private fun initHotRoomTab() {
roomNewFriendsAdapter = RoomNewFriendsAdapter()
rvDelegate = RVDelegate.Builder<UserInfo>()
.setAdapter(roomNewFriendsAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyTextView(context, "暂无新朋友"))
.setLayoutManager(LinearLayoutManager(mContext))
.build()
homeViewModel.newFriendLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onLazyLoad() {
super.onLazyLoad()
loadData()
}
override fun onResume() {
super.onResume()
if (isShield) {
loadData()
isShield = false
}
}
private fun loadData() {
homeViewModel.getHomePlayV2()
homeViewModel.getNewFriendList()
}
private fun showGameGuide(){
val userInfo = UserModel.get().cacheLoginUserInfo
if (userInfo?.isHasPermitRoom == true) {
binding.ivGameGuide.visibility = View.GONE
} else {
binding.ivGameGuide.visibility = View.GONE
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onLoginUserInfoUpdateEvent(event: LoginUserInfoUpdateEvent?) {
showGameGuide()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) {
loadData()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?) {
isShield = true
}
}

View File

@@ -43,7 +43,7 @@ class ContactsListFragment : BaseViewBindingFragment<FragmentContactListBinding>
private val viewModel: HomeMessageViewModel by activityViewModels()
private val publicChatAdapter = PublicChatLaneAdapter(ArrayList())
private val stateHelper = FragmentVisibleStateHelper(this) {
private val stateHelper = FragmentVisibleStateHelper(this).start {
onVisibleChanged(it)
}
companion object {

View File

@@ -8,7 +8,6 @@ import com.chwl.app.R
import com.chwl.app.application.IReportConstants
import com.chwl.app.application.ReportManager
import com.chwl.app.avroom.adapter.CommonVPAdapter
import com.chwl.app.avroom.adapter.RoomMessageIndicatorAdapter
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.databinding.FragmentHomeBinding
import com.chwl.app.home.HomeViewModel

View File

@@ -2,10 +2,10 @@ package com.chwl.app.home.fragment
import android.view.View
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.chwl.app.R
import com.chwl.app.application.IReportConstants
@@ -16,6 +16,7 @@ import com.chwl.app.databinding.FragmentHomeRecommendBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeBannerAdapter
import com.chwl.app.home.dialog.RecommendRoomDialog
import com.chwl.app.support.FragmentVisibleStateHelper
import com.chwl.app.ui.search.SearchActivity
import com.chwl.app.ui.user.adapter.HomeRecommendIndicatorAdapter
import com.chwl.app.ui.utils.load
@@ -27,22 +28,15 @@ import com.chwl.app.utils.CommonJumpHelper
import com.chwl.core.DemoCache
import com.chwl.core.home.bean.BannerInfo
import com.chwl.core.home.bean.HomeTagInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.library.utils.ListUtils
import com.example.lib_utils.ktx.getDrawableById
import com.zhpan.bannerview.BannerViewPager
import org.greenrobot.eventbus.EventBus
/**
首页
*/
class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBinding>(),
View.OnClickListener,
HomeRecommendIndicatorAdapter.OnItemSelectListener {
private val TAB_ID_RECOMMEND = Int.MAX_VALUE - 1
private val TAB_ID_ACCOMPANY = Int.MAX_VALUE - 2
View.OnClickListener {
private val tabList = mutableListOf<HomeTagInfo>()
private val homeViewModel: HomeViewModel by activityViewModels()
@@ -64,7 +58,9 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
// binding.ivMyRoom.setOnClickListener(this)
binding.refreshLayout.setOnRefreshListener {
it.finishRefresh()
EventBus.getDefault().post(RefreshHomeDataEvent())
childFragmentManager.fragments.forEach {
(it as? OnRefreshListener)?.onRefresh()
}
homeViewModel.getBannerInfo()
if (binding.viewPager.adapter?.itemCount == 0) {
homeViewModel.getHomeTagInfo()
@@ -185,18 +181,8 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
override fun createFragment(position: Int): Fragment {
val itemId = getItemId(position)
return when (itemId) {
TAB_ID_RECOMMEND.toLong() -> {
RecommendFragment()
}
TAB_ID_ACCOMPANY.toLong() -> {
AccompanyFragment()
}
else -> {
return HomeTabFragment.newInstance(itemId.toInt())
}
return HomeTabFragment.newInstance(itemId.toInt()).apply {
autoRefreshOnVisible = true
}
}
@@ -253,6 +239,4 @@ class HomeRecommendFragment : BaseViewBindingFragment<FragmentHomeRecommendBindi
tabList.clear()
}
override fun onItemSelect(position: Int, view: TextView?) {
}
}

View File

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

View File

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

View File

@@ -3,9 +3,8 @@ package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
@@ -13,21 +12,16 @@ import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeHotAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.app.application.IReportConstants
import com.chwl.app.application.ReportManager
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.HomeTabFragmentBinding
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import com.chwl.app.support.FragmentVisibleStateHelper
/**
* Peko首页
* 首页-房间列表
*/
class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>(),
SwipeRefreshLayout.OnRefreshListener {
private lateinit var roomHotAdapter: HomeHotAdapter
@@ -35,8 +29,7 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
private val homeViewModel: HomeViewModel by viewModels()
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
var autoRefreshOnVisible = false
private var pageNum = 1
private var tabId: Int? = null
@@ -52,6 +45,15 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
override fun init() {
tabId = arguments?.getInt("tabId")
initHotRoomTab()
if (autoRefreshOnVisible) {
FragmentVisibleStateHelper(this).apply {
start {
if (it && !isFirstVisible) {
loadData(true)
}
}
}
}
}
private fun initHotRoomTab() {
@@ -86,14 +88,6 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
loadData(true)
}
override fun onResume() {
super.onResume()
if (isShield) {
loadData(true)
isShield = false
}
}
private fun loadData(isRefresh: Boolean) {
if (isRefresh) {
pageNum = 1
@@ -103,26 +97,9 @@ class HomeTabFragment : BaseViewBindingFragment<HomeTabFragmentBinding>() {
homeViewModel.getHomeTabName(tabId ?: 0, pageNum)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
override fun onRefresh() {
if (isResumed) {
loadData(true)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?) {
isShield = true
}
}

View File

@@ -1,220 +0,0 @@
package com.chwl.app.home.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.chwl.app.R;
import com.chwl.app.application.IReportConstants;
import com.chwl.app.application.ReportManager;
import com.chwl.app.avroom.activity.AVRoomActivity;
import com.chwl.app.base.BaseFragment;
import com.chwl.app.home.adapter.HomeTopAdapter;
import com.chwl.app.ui.widget.magicindicator.buildins.UIUtil;
import com.chwl.core.home.bean.HomeTabMapInfo;
import com.chwl.core.home.event.RefreshHomeDataEvent;
import com.chwl.core.home.model.GameHomeModel;
import com.chwl.core.room.event.RoomShieldEvent;
import com.chwl.core.utils.net.RxHelper;
import com.chwl.library.utils.ListUtils;
import com.zhpan.bannerview.BannerViewPager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
/**
*
*/
public class HomeTabHomeFragment extends BaseFragment {
private static final Comparator<HomeTabMapInfo> comp = (o1, o2) -> {
int seq = o1.getSeq() - o2.getSeq();
return Integer.compare(seq, 0);
};
private BannerViewPager<HomeTabMapInfo> mBanner;
//是否需要刷新接口进行屏蔽房间操作
private boolean isShield = false;
public static HomeTabHomeFragment newInstance() {
HomeTabHomeFragment fragment = new HomeTabHomeFragment();
return fragment;
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_home_room_tab;
}
@Override
public void onFindViews() {
super.onFindViews();
mBanner = mView.findViewById(R.id.mBanner);
}
/**
* 请求数据
*/
@SuppressLint("CheckResult")
private void getData() {
GameHomeModel.get()
.getHomeTabHome()
.compose(RxHelper.handleSchedulers())
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe((serviceResult, throwable) -> {
if (throwable == null) {
if (ListUtils.isListEmpty(serviceResult)) {
return;
}
List<HomeTabMapInfo> roomsList = new ArrayList<>(serviceResult);//未处理的数
List<HomeTabMapInfo> randomList = new ArrayList<>();//不是置顶的
List<HomeTabMapInfo> finalList = new ArrayList<>();//最终的6条数据
for (int i = 0; i < roomsList.size(); i++) {
roomsList.get(i).setItemType(HomeTabMapInfo.TYPE_NORMAL);//对原始数据设置type
}
for (int i = 0; i < roomsList.size(); i++) {
if (roomsList.get(i).isIsTop()) {
finalList.add(roomsList.get(i));
} else {
randomList.add(roomsList.get(i));
}
}
sortSeqRoom(finalList);
refreshRoomData(finalList, randomList);
}
});
}
/**
* 刷新数据
*/
private void refreshRoomData(List<HomeTabMapInfo> finalList, List<HomeTabMapInfo> randomList) {
List<HomeTabMapInfo> finalList1 = new ArrayList<>(finalList);//最终的6条数据
List<HomeTabMapInfo> randomList1 = new ArrayList<>(randomList);//不是置顶的
mBanner.setAdapter(new HomeTopAdapter());
mBanner.post(() -> {
int width = UIUtil.getScreenWidth(mContext) - (UIUtil.dip2px(mContext, 10) * 3);
int revealWidth = width / 3;
ViewGroup.LayoutParams bannerLayoutParams = mBanner.getLayoutParams();
bannerLayoutParams.height = revealWidth + UIUtil.dip2px(mContext, 32);
mBanner.setLayoutParams(bannerLayoutParams);
setupBanner(
revealWidth,
revealWidth,
getConvertData(finalList1, randomList1)
);
});
}
private void setupBanner(
int leftRevealWidth,
int rightRevealWidth,
List<HomeTabMapInfo> list
) {
mBanner.setPageMargin(UIUtil.dip2px(mContext, 10))
.setScrollDuration(800)
.setRevealWidth(leftRevealWidth, rightRevealWidth)
.setOnPageClickListener((clickedView, position) -> {
//首页_热门房间
HashMap<String, Object> map = new HashMap<>(3);
map.put(IReportConstants.HOMEPAGE_TYPE, IReportConstants.FIVE);
map.put(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE);
ReportManager.get().reportEvent(IReportConstants.MODULE_HOMEPAGE_CLICK, map);
AVRoomActivity.startForFromType(mContext, list.get(position).getRoomUid(), AVRoomActivity.FROM_TYPE_RECOMMEND);
})
.create(list);
}
/**
* 转化房间数组不足6的加上虚位以待
*
* @param
* @return
*/
private List<HomeTabMapInfo> getConvertData(List<HomeTabMapInfo> finalList, List<HomeTabMapInfo> randomList) {
List<HomeTabMapInfo> finalList1 = new ArrayList<>(finalList);//最终的6条数据
List<HomeTabMapInfo> randomList1 = new ArrayList<>(randomList);//不是置顶的
int ROOM_COUNT = 6;//首页显示6条数据
randomList1 = randomList(randomList1);
finalList1.addAll(randomList1);
if (finalList1.size() >= ROOM_COUNT) {
finalList1 = finalList1.subList(0, ROOM_COUNT);
}
return finalList1;
}
/**
* **************************** 排序 ***********************************
*/
private void sortSeqRoom(List<HomeTabMapInfo> list) {
if (list.size() == 0) {
return;
}
Collections.sort(list, comp);
}
private List<HomeTabMapInfo> randomList(List<HomeTabMapInfo> sourceList) {
if (sourceList == null || sourceList.size() == 0) {
return sourceList;
}
ArrayList randomList = new ArrayList(sourceList.size());
do {
int randomIndex = Math.abs(new Random().nextInt(sourceList.size()));
randomList.add(sourceList.remove(randomIndex));
} while (sourceList.size() > 0);
return randomList;
}
@Override
public void initiate() {
getData();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
@Override
public void onResume() {
super.onResume();
if(isShield){
getData();
isShield = false;
}
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
if (isResumed()) getData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRoomShieldEvent(RoomShieldEvent event){
isShield = true;
}
}

View File

@@ -1,53 +1,47 @@
package com.chwl.app.home.fragment
import android.widget.LinearLayout
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.fragment.app.activityViewModels
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.chwl.app.R
import com.chwl.app.avroom.adapter.CommonVPAdapter
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.databinding.HomeMeFragmentBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.HomeMeViewModel
import com.chwl.app.home.helper.OpenRoomHelper
import com.chwl.app.support.FragmentVisibleStateHelper
import com.chwl.app.ui.user.adapter.HomeRecommendIndicatorAdapter
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.ui.utils.loadImage
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.chwl.core.home.bean.HomeTagInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.example.lib_utils.ktx.getDrawableById
import com.chwl.core.room.bean.RoomInfo
import com.example.lib_utils.ktx.singleClick
import org.greenrobot.eventbus.EventBus
/**
首页
首页-我的
*/
class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>(),
HomeRecommendIndicatorAdapter.OnItemSelectListener {
class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>() {
private val TAB_ID_RECOMMEND = Int.MAX_VALUE - 1
private val TAB_ID_ACCOMPANY = Int.MAX_VALUE - 2
private val tabList = mutableListOf<HomeTagInfo>()
private val homeViewModel: HomeViewModel by activityViewModels()
private val viewModel: HomeMeViewModel by activityViewModels()
override fun init() {
initListener()
initTab()
homeViewModel.homeTagLiveData.observe(this) {
loadTabList(transformTabList(it))
initObserve()
FragmentVisibleStateHelper(this).start {
if (it) {
viewModel.getMyRoomInfo()
}
}
homeViewModel.getHomeTagInfo()
}
private fun initListener() {
binding.refreshLayout.setOnRefreshListener {
it.finishRefresh()
EventBus.getDefault().post(RefreshHomeDataEvent())
homeViewModel.getBannerInfo()
if (binding.viewPager.adapter?.itemCount == 0) {
homeViewModel.getHomeTagInfo()
childFragmentManager.fragments.forEach {
(it as? SwipeRefreshLayout.OnRefreshListener)?.onRefresh()
}
}
binding.refreshLayout.isEnableLoadmore = false
@@ -58,86 +52,59 @@ class HomeWithMeFragment : BaseViewBindingFragment<HomeMeFragmentBinding>(),
}
private fun initTab() {
binding.viewPager.adapter =
object : FragmentStateAdapter(childFragmentManager, lifecycle) {
override fun getItemId(position: Int): Long {
return tabList[position].id.toLong()
}
override fun containsItem(itemId: Long): Boolean {
return tabList.firstOrNull { it.id.toLong() == itemId } != null
}
override fun createFragment(position: Int): Fragment {
val itemId = getItemId(position)
return when (itemId) {
TAB_ID_RECOMMEND.toLong() -> {
RecommendFragment()
}
TAB_ID_ACCOMPANY.toLong() -> {
AccompanyFragment()
}
else -> {
return HomeTabFragment.newInstance(itemId.toInt())
}
}
}
override fun getItemCount(): Int {
return tabList.size
}
}
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
}
private fun resetTabIndicator(list: List<String>) {
val tabList = listOf(getString(R.string.lately), getString(R.string.collect))
val fragmentList = listOf(HomeRoomHistoryListFragment(), HomeRoomCollectListFragment())
val commonNavigator = CommonNavigator(context)
if (list.size <= 4) {
commonNavigator.isAdjustMode = true
}
val magicIndicatorAdapter = HomeRecommendIndicatorAdapter(
context,
list
tabList
)
magicIndicatorAdapter.setOnItemSelectListener { position, _ ->
binding.viewPager.currentItem = position
}
commonNavigator.adapter = magicIndicatorAdapter
binding.magicIndicator.navigator = commonNavigator
val titleContainer: LinearLayout = commonNavigator.titleContainer // must after setNavigator
titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
titleContainer.dividerPadding = resources.getDimensionPixelOffset(R.dimen.dp_15)
titleContainer.dividerDrawable = getDrawableById(R.drawable.home_recommend_tab_splitter)
binding.magicIndicator.onPageSelected(binding.viewPager.currentItem)
binding.viewPager.offscreenPageLimit = fragmentList.size
binding.viewPager.adapter = CommonVPAdapter(
childFragmentManager,
lifecycle,
fragmentList
)
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
}
private fun transformTabList(list: List<HomeTagInfo>): List<HomeTagInfo> {
return list
}
private fun loadTabList(list: List<HomeTagInfo>) {
// 预防脏数据导致fragment复用问题
val newList = list.distinctBy {
it.id
private fun initObserve() {
viewModel.roomInfoLiveData.observe(this) {
updateRoomInfo(it)
}
val currentListId = tabList.joinToString { it.id.toString() }
val newListId = newList.joinToString { it.id.toString() }
if (currentListId == newListId) {
return
}
private fun updateRoomInfo(roomInfo: RoomInfo?) {
binding.tvRoomName.text = roomInfo?.title
binding.tvRoomTopic.text = roomInfo?.roomDesc
binding.ivRoomCover.loadImage(roomInfo?.backPic ?: "")
binding.tvOnlineNumber.text = roomInfo?.onlineNum?.toString() ?: "0"
loadRoomUsers(null)
}
private fun loadRoomUsers(list: List<String>?) {
val avatarViewList = arrayOf(
binding.ivRoomUser0,
binding.ivRoomUser1,
binding.ivRoomUser2,
binding.ivRoomUser3,
binding.ivRoomUser4
)
avatarViewList.forEachIndexed { index, imageView ->
val item = list?.getOrNull(index)
if (item == null) {
imageView.setImageDrawable(null)
imageView.isGone = true
} else {
imageView.loadAvatar(item)
imageView.isVisible = true
}
}
tabList.clear()
tabList.addAll(newList)
binding.viewPager.adapter?.notifyDataSetChanged()
resetTabIndicator(tabList.map { it.name })
}
override fun onDestroyView() {
super.onDestroyView()
tabList.clear()
}
override fun onItemSelect(position: Int, view: TextView?) {
}
}

View File

@@ -136,10 +136,9 @@ class MeFragment : BaseFragment(), View.OnClickListener {
loadVipInfo(it)
}
FragmentVisibleStateHelper(this) {
FragmentVisibleStateHelper(this).start {
onVisibleChanged(it)
}
}
private fun setCenterData(list: List<MeCenterInfo>?) {

View File

@@ -1,144 +0,0 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.Gravity
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.chwl.app.R
import com.chwl.app.avroom.adapter.CommonVPAdapter
import com.chwl.app.avroom.adapter.RoomVPAdapter
import com.chwl.app.base.BaseFragment
import com.chwl.app.databinding.FragmentPartyBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.PartyMagicIndicatorAdapter
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.chwl.core.home.bean.HomeTagInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
首页
*/
class PartyFragment : BaseFragment(), PartyMagicIndicatorAdapter.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 = 1
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)
}
}
}
override fun onResume() {
super.onResume()
homeViewModel.getTagInfo()
}
private fun onGetHomeTagSuccess(info: List<HomeTagInfo>) {
var changed = false
val oldTabInfoList: List<CharSequence> = ArrayList<CharSequence>(mTabInfoList)
for (tagInfo in info) {
if (!oldTabInfoList.contains(tagInfo.name)) {
changed = true
break
}
}
//只有HomeTagInfo发生改变才刷新数据
if (changed) {
LogUtils.e("$changed:oldTabInfoList")
mTabInfoList.clear()
mFragments.clear()
for (i in info.indices) {
//过滤对象是空和没有标签名同时也没有子标签的情况
var title: CharSequence?
var fragment: Fragment?
var name = info[i].name
if (name != null) {
name = name.trim { it <= ' ' }
}
title = name
mTabInfoList.add(title)
val tabId: Int = info[i].id
fragment = when (title) {
ResUtil.getString(R.string.home_fragment_partyfragment_01) -> {
RoomLikeFragment.newInstance()
}
ResUtil.getString(R.string.home_fragment_partyfragment_02) -> {
RoomGameFragment.newInstance()
}
else -> {
RoomCommonFragment.newInstance(tabId)
}
}
mFragments.add(fragment)
}
val commonNavigator = CommonNavigator(context)
commonNavigator.setTitleWrapContent(false)
commonNavigator.titleMargin = ScreenUtil.dip2px(2.0F)
commonNavigator.setTitleGravity(Gravity.CENTER_VERTICAL)
val magicIndicatorAdapter = PartyMagicIndicatorAdapter(mTabInfoList)
magicIndicatorAdapter.textSize = 14
magicIndicatorAdapter.setOnItemSelectListener(this)
commonNavigator.adapter = magicIndicatorAdapter
mBinding.magicIndicator.navigator = commonNavigator
mBinding.viewPager.offscreenPageLimit = 2
mBinding.viewPager.adapter = CommonVPAdapter(
childFragmentManager, lifecycle,
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,111 +0,0 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import android.view.View
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chwl.app.R
import com.chwl.app.application.IReportConstants
import com.chwl.app.application.ReportManager
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentRecommendBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeHotAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
首页
*/
class RecommendFragment : BaseViewBindingFragment<FragmentRecommendBinding>() {
private lateinit var roomHotAdapter: HomeHotAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val homeViewModel: HomeViewModel by activityViewModels()
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
initHotRoomTab()
}
private fun initHotRoomTab() {
roomHotAdapter = HomeHotAdapter()
roomHotAdapter.onItemClickListener =
BaseQuickAdapter.OnItemClickListener { _: BaseQuickAdapter<*, *>?, _: View?, position: Int ->
val homePlayInfo: HomeRoomInfo? = roomHotAdapter.getItem(position)
if (homePlayInfo != null) {
//首页_房间派对
ReportManager.get().reportEvent(
IReportConstants.MODULE_HOMEPAGE_CLICK, mapOf(
Pair(IReportConstants.HOMEPAGE_TYPE, IReportConstants.TEN),
Pair(IReportConstants.MODULE, IReportConstants.MOLISTAR_HOMEPAGE)
)
)
AVRoomActivity.start(mContext, homePlayInfo.uid)
}
}
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(roomHotAdapter)
.setRecyclerView(binding.mRecyclerRoom)
.setEmptyView(EmptyViewHelper.createEmptyTextViewHeight(context, ResUtil.getString(R.string.hot_recommend_empty)))
.setLayoutManager(LinearLayoutManager(mContext, RecyclerView.VERTICAL, false))
.build()
homeViewModel.homeHotRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onLazyLoad() {
super.onLazyLoad()
loadData()
}
override fun onResume() {
super.onResume()
if (isShield) {
loadData()
isShield = false
}
}
private fun loadData() {
homeViewModel.getHotRoom()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) {
loadData()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?) {
isShield = true
}
}

View File

@@ -1,116 +0,0 @@
package com.chwl.app.home.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentRoomCommonBinding
import com.chwl.app.home.RoomCommonViewModel
import com.chwl.app.home.adapter.RoomCommonAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import com.chwl.library.utils.ResUtil
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 var roomCommonViewModel: RoomCommonViewModel? = null
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
val roomCommonViewModel: RoomCommonViewModel by viewModels()
this.roomCommonViewModel = roomCommonViewModel
mAdapter = RoomCommonAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext))
.setPageSize(20)
.setEmptyView(EmptyViewHelper.createEmptyTextView(mContext, ResUtil.getString(R.string.home_fragment_roomcommonfragment_01)))
.setRefreshLayout(binding.refreshLayout)
.setRecyclerView(binding.recyclerView)
.build()
mAdapter.setOnItemClickListener { _, _, position ->
mAdapter.getItem(position)?.let {
AVRoomActivity.start(context, it.roomUid)
}
}
mAdapter.setOnLoadMoreListener({
loadData(false)
}, binding.recyclerView)
binding.refreshLayout.setOnRefreshListener {
loadData(true)
}
roomCommonViewModel.commonRoomLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onLazyLoad() {
super.onLazyLoad()
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
@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 onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -1,126 +0,0 @@
package com.chwl.app.home.fragment
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.chwl.app.R
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentRoomGameBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.RoomGameAdapter
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import com.chwl.library.utils.ResUtil
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 var homeViewModel: HomeViewModel? = null
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
val homeViewModel: HomeViewModel by viewModels()
this.homeViewModel = homeViewModel
roomHotAdapter = RoomGameAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(roomHotAdapter)
.setRecyclerView(binding.recyclerView)
.setEmptyView(
EmptyViewHelper.createEmptyTextView(
context,
ResUtil.getString(R.string.home_fragment_roomgamefragment_01)
)
)
.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 onLazyLoad() {
super.onLazyLoad()
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
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 onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -1,154 +0,0 @@
package com.chwl.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.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentRoomLikeBinding
import com.chwl.app.home.HomeViewModel
import com.chwl.app.home.adapter.HomeConcernsAdapter
import com.chwl.app.home.adapter.RoomLikeAdapter
import com.chwl.app.ui.relation.AttentionListActivity
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.home.bean.HomeRoomInfo
import com.chwl.core.home.event.RefreshHomeDataEvent
import com.chwl.core.room.event.RoomShieldEvent
import com.chwl.library.utils.ResUtil
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()
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
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.createEmptyTextView(mContext, ResUtil.getString(R.string.home_fragment_roomlikefragment_01)))
.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 onLazyLoad() {
super.onLazyLoad()
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
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 onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -42,7 +42,7 @@ class StarFragment : BaseViewBindingFragment<StarFragmentBinding>(), MainTabCont
private var currentUser: StarUser? = null
override fun init() {
FragmentVisibleStateHelper(this) {
FragmentVisibleStateHelper(this).start {
onVisibleChanged(it)
}
initView()

View File

@@ -8,21 +8,23 @@ import androidx.lifecycle.LifecycleOwner
import com.chwl.app.base.BaseFragment
class FragmentVisibleStateHelper(
private val fragment: Fragment,
private val onVisibleChanged: (Boolean) -> Unit
private val fragment: Fragment
) : LifecycleEventObserver {
private var onVisibleChanged: ((Boolean) -> Unit)? = null
private var isRealVisible = false
private var visibleCount = 0
val isVisible get() = isRealVisible
val isFirstVisible get() = isVisible && visibleCount == 1
init {
fun start(onVisibleChanged: (Boolean) -> Unit): FragmentVisibleStateHelper {
this.onVisibleChanged = onVisibleChanged
fragment.lifecycle.addObserver(this)
(fragment as? BaseFragment)?.let {
it.onHiddenChangedListener = Consumer<Boolean> {
checkVisibleState()
}
}
return this
}
fun checkVisibleState() {
@@ -32,12 +34,15 @@ class FragmentVisibleStateHelper(
)
if (isRealVisible != newRealVisible) {
isRealVisible = newRealVisible
if (newRealVisible) {
visibleCount++
}
onVisibleChanged(newRealVisible)
}
}
private fun onVisibleChanged(isVisible: Boolean) {
onVisibleChanged.invoke(isVisible)
onVisibleChanged?.invoke(isVisible)
}
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {

View File

@@ -1,109 +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">
<data>
<import type="android.view.View" />
<variable
name="click"
type="android.view.View.OnClickListener" />
</data>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
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:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llListChat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_10"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/mLiCreateRoom"
android:layout_width="0dp"
android:layout_height="64dp"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_15"
android:layout_weight="1"
android:background="@drawable/bg_home_chat"
android:gravity="center_vertical"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="@dimen/dp_12"
android:src="@drawable/ic_home_chat_add" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:text="@string/create_home_play"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_15" />
</LinearLayout>
<com.chwl.app.view.NestedScrollableHost
android:id="@+id/ns_host"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/mRecyclerChat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:orientation="horizontal"
android:overScrollMode="never"
android:paddingStart="0dp"
android:paddingEnd="@dimen/dp_10"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</com.chwl.app.view.NestedScrollableHost>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivGameGuide"
android:layout_width="120dp"
android:layout_height="75dp"
android:src="@drawable/ic_game_guide"
android:visibility="gone" />
</LinearLayout>
<com.chwl.library.common.widget.VpRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:overScrollMode="never"
android:scrollbars="none" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</layout>

View File

@@ -1,16 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/mBanner"
android:layout_width="match_parent"
android:layout_height="140dp"
app:bvp_can_loop="true"
app:bvp_auto_play="true"
app:bvp_indicator_visibility="gone"
app:bvp_page_style="multi_page_scale" />
</LinearLayout>

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
</data>
<LinearLayout
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.chwl.app.ui.widget.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_marginStart="7dp" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</layout>

View File

@@ -1,23 +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">
<data>
<import type="android.view.View" />
<variable
name="click"
type="android.view.View.OnClickListener" />
</data>
<com.chwl.library.common.widget.VpRecyclerView
android:id="@+id/mRecyclerRoom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/dp_12"
android:overScrollMode="never"
android:scrollbars="none" />
</layout>

View File

@@ -1,15 +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">
<com.chwl.library.common.widget.VpRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:overScrollMode="never" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -1,36 +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">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.chwl.library.common.widget.VpRecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false" />
<com.chwl.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="@string/layout_fragment_room_game_01"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
</FrameLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

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" />
<androidx.appcompat.widget.AppCompatImageView
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="@string/layout_fragment_room_like_01"
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="@string/layout_fragment_room_like_02"
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.chwl.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="@string/layout_fragment_room_like_03"
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:text="@string/layout_fragment_room_like_04"
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"
app:drawableRightCompat="@drawable/arrow_right" />
<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="@string/layout_fragment_room_like_05"
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>
<com.chwl.library.common.widget.VpRecyclerView
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

@@ -104,9 +104,11 @@
android:padding="@dimen/dp_0_5"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
android:visibility="gone"
app:shapeAppearance="@style/shape_circle"
app:strokeColor="@color/white"
app:strokeWidth="@dimen/dp_1" />
app:strokeWidth="@dimen/dp_1"
tools:visibility="visible" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_room_user_1"
@@ -116,9 +118,11 @@
android:padding="@dimen/dp_0_5"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
android:visibility="gone"
app:shapeAppearance="@style/shape_circle"
app:strokeColor="@color/white"
app:strokeWidth="@dimen/dp_1" />
app:strokeWidth="@dimen/dp_1"
tools:visibility="visible" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_room_user_2"
@@ -128,9 +132,11 @@
android:padding="@dimen/dp_0_5"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
android:visibility="gone"
app:shapeAppearance="@style/shape_circle"
app:strokeColor="@color/white"
app:strokeWidth="@dimen/dp_1" />
app:strokeWidth="@dimen/dp_1"
tools:visibility="visible" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_room_user_3"
@@ -140,9 +146,11 @@
android:padding="@dimen/dp_0_5"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
android:visibility="gone"
app:shapeAppearance="@style/shape_circle"
app:strokeColor="@color/white"
app:strokeWidth="@dimen/dp_1" />
app:strokeWidth="@dimen/dp_1"
tools:visibility="visible" />
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/iv_room_user_4"
@@ -152,9 +160,11 @@
android:padding="@dimen/dp_0_5"
android:scaleType="centerCrop"
android:src="@drawable/default_avatar"
android:visibility="gone"
app:shapeAppearance="@style/shape_circle"
app:strokeColor="@color/white"
app:strokeWidth="@dimen/dp_1" />
app:strokeWidth="@dimen/dp_1"
tools:visibility="visible" />
</LinearLayout>
@@ -172,8 +182,7 @@
android:textColor="#797B80"
android:textSize="@dimen/dp_13"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="266" />
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>

View File

@@ -5300,4 +5300,5 @@
<string name="send_gift_tab_title">الهدايا</string>
<string name="level_up_wear_dress_tips_format">恭喜你成為「%s」當前已自動佩戴該等級裝扮是否保留原有裝扮</string>
<string name="home_room_card_topic_empty_def">歡迎來到我的房間</string>
<string name="lately">最近</string>
</resources>

View File

@@ -5242,5 +5242,5 @@
<string name="send_gift_tab_title">送禮</string>
<string name="level_up_wear_dress_tips_format">恭喜你成為「%s」當前已自動佩戴該等級裝扮是否保留原有裝扮</string>
<string name="home_room_card_topic_empty_def">歡迎來到我的房間</string>
<string name="lately">最近</string>
</resources>

View File

@@ -5281,6 +5281,7 @@ You cannot join again within 24 hours after leaving</string>
<string name="send_gift_tab_title">Gift</string>
<string name="level_up_wear_dress_tips_format">恭喜你成為「%s」當前已自動佩戴該等級裝扮是否保留原有裝扮</string>
<string name="home_room_card_topic_empty_def">歡迎來到我的房間</string>
<string name="lately">最近</string>
</resources>

View File

@@ -35,7 +35,7 @@ class GameHomeFragment : BaseViewBindingFragment<GameHomeFragmentBinding>(), Mai
initView()
initEvent()
initObserver()
FragmentVisibleStateHelper(this) {
FragmentVisibleStateHelper(this).start {
onVisibleChanged(it)
}
PayModel.get().refreshWalletInfo(true)

View File

@@ -1,4 +0,0 @@
package com.chwl.core.home.event;
public class RefreshHomeDataEvent {
}