[Modify]屏蔽举报功能修改

This commit is contained in:
wushaocheng
2022-12-28 11:45:39 +08:00
parent b5fe870932
commit 34d5a68947
24 changed files with 180 additions and 767 deletions

View File

@@ -1,5 +1,7 @@
package com.yizhuan.erban;
import static com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel.KEY_FLAG_VALID_CHANNEL_PAGE;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
@@ -38,7 +40,6 @@ import com.orhanobut.logger.Logger;
import com.tencent.bugly.crashreport.CrashReport;
import com.tongdaxing.erban.upgrade.AppUpgradeHelper;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.trello.rxlifecycle3.android.FragmentEvent;
import com.yizhuan.erban.application.IReportConstants;
import com.yizhuan.erban.application.ReportManager;
import com.yizhuan.erban.application.XChatApplication;
@@ -108,7 +109,6 @@ import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.user.bean.GiftWallInfo;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent;
@@ -135,11 +135,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import static com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel.KEY_FLAG_VALID_CHANNEL_PAGE;
/**
* @author Administrator
@@ -268,7 +264,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
EventBus.getDefault().register(this);
otherModelInit();
Observable.interval(15, TimeUnit.SECONDS)
Observable.interval(60, TimeUnit.SECONDS)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> EventBus.getDefault().post(new RefreshHomeDataEvent()));

View File

@@ -61,6 +61,7 @@ import com.yizhuan.erban.avroom.redpackage.RedPackageOpenDialog;
import com.yizhuan.erban.avroom.view.IAvRoomView;
import com.yizhuan.erban.avroom.widget.VerticalViewPagerAdapter;
import com.yizhuan.erban.base.BaseMvpActivity;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.common.widget.CircleImageView;
import com.yizhuan.erban.common.widget.CustomImageSpan;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
@@ -75,7 +76,6 @@ import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelOneDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelThreeDialog;
import com.yizhuan.erban.ui.widget.dialog.AllServiceGiftLevelTwoDialog;
import com.yizhuan.erban.ui.widget.dialog.MonsterDialog;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.utils.UserUtils;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.DemoCache;
@@ -113,6 +113,7 @@ import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.bean.RoomModeType;
import com.yizhuan.xchat_android_core.room.dragonball.DragonBallModel;
import com.yizhuan.xchat_android_core.room.event.FinishAvRoomEvent;
import com.yizhuan.xchat_android_core.room.event.RoomExitEvent;
import com.yizhuan.xchat_android_core.room.event.RoomTaskTipsEvent;
import com.yizhuan.xchat_android_core.room.pk.event.PKStateEvent;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
@@ -1134,6 +1135,11 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRoomExitEvent(RoomExitEvent event) {
toBack();
}
public Single<String> giveUpDragonBar() {
return DragonBallModel.get()
.clearDragonBar()

View File

@@ -14,25 +14,18 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.yizhuan.erban.R
import com.yizhuan.erban.UIHelper
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.avroom.adapter.ExitRoomAdapter
import com.yizhuan.erban.avroom.presenter.HomePartyPresenter
import com.yizhuan.erban.common.widget.dialog.DialogManager.LambdaOkDialogListener
import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.erban.ui.widget.ButtonItem
import com.yizhuan.xchat_android_constants.XChatConstants
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager
import com.yizhuan.xchat_android_core.room.model.AvRoomModel
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.utils.net.BeanObserver
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes
import com.yizhuan.xchat_android_library.utils.ResUtil
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus
@ActLayoutRes(R.layout.dialog_exit_room)
@@ -76,49 +69,6 @@ class ExitRoomPopupWindow(val avRoomActivity: AVRoomActivity) : PopupWindow() {
animationStyle = R.style.style_anim_right_in_out
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
tvReport.setOnClickListener {
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return@setOnClickListener
val list: MutableList<ButtonItem> = ArrayList()
val item1 = ButtonItem(
ResUtil.getString(R.string.me_shield_room)
) {
UserModel.get().addReport(roomInfo.uid, 1)
.subscribe(object : BeanObserver<String?>() {
override fun onErrorMsg(error: String) {
dismiss()
avRoomActivity.toast(error)
}
override fun onSuccess(s: String) {
avRoomActivity.dialogManager.dismissDialog()
avRoomActivity.toast(ResUtil.getString(R.string.me_shield_success))
EventBus.getDefault().post(RefreshHomeDataEvent())
handleExitRoom()
dismiss()
}
})
}
list.add(item1)
val item2 = ButtonItem(
ResUtil.getString(R.string.layout_dialog_exit_room_01)
) {
UIHelper.showReportPage(
avRoomActivity,
roomInfo.uid,
XChatConstants.REPORT_TYPE_ROOM
)
avRoomActivity.dialogManager.dismissDialog()
dismiss()
}
list.add(item2)
avRoomActivity.dialogManager.showCommonPopupDialog(
list,
ResUtil.getString(R.string.cancel)
)
}
tvExitRoom.setOnClickListener {
handleExitRoom()

View File

@@ -16,19 +16,23 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.coorchice.library.utils.LogUtils;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.hjq.toast.ToastUtils;
import com.tongdaxing.erban.sadmin.RoomSAdminManagerActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.avroom.activity.CreatePKActivity;
import com.yizhuan.erban.avroom.activity.RoomSettingActivity;
import com.yizhuan.erban.avroom.anotherroompk.RoomPKCreateActivity;
import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper;
import com.yizhuan.erban.avroom.singleroompk.SingleRoomPKCreateActivity;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.common.util.Utils;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.ui.widget.recyclerview.decoration.ColorDecoration;
import com.yizhuan.erban.ui.widget.recyclerview.layoutmanager.FullyGridLayoutManager;
import com.yizhuan.erban.vip.VipBroadcastDialog;
import com.yizhuan.tutu.room_chat.activity.RoomInviteFansActivity;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
@@ -36,6 +40,8 @@ import com.yizhuan.xchat_android_core.manager.IMNetEaseManager;
import com.yizhuan.xchat_android_core.redpackage.RedPackageModel;
import com.yizhuan.xchat_android_core.room.anotherroompk.SingleRoomPKModel;
import com.yizhuan.xchat_android_core.room.bean.RoomInfo;
import com.yizhuan.xchat_android_core.room.event.RoomExitEvent;
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent;
import com.yizhuan.xchat_android_core.room.giftvalue.GiftValueModel;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.room.model.HomePartyModel;
@@ -44,7 +50,9 @@ import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
import com.yizhuan.xchat_android_core.utils.net.BeanObserver;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ResUtil;
@@ -52,6 +60,7 @@ import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
@@ -123,6 +132,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
addRoomLimit(optAdapter);
addGiftValueAction(optAdapter);
addSuperAdminAction(optAdapter);
addShieldReportAction(optAdapter);
rvOPtList.setAdapter(optAdapter);
}
@@ -625,6 +635,58 @@ public class RoomOperationDialog extends BottomSheetDialog {
));
}
/**
* 举报屏蔽
*/
private void addShieldReportAction(OptAdapter optAdapter) {
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
if (roomInfo == null) {
return;
}
optAdapter.addData(new OptAction(R.drawable.icon_room_shield_report,
ResUtil.getString(R.string.me_shield_report),
() ->{
DialogManager dialogManager = new DialogManager(context);
List<ButtonItem> buttonItems = new ArrayList<>();
ButtonItem buttonItem1 = new ButtonItem(ResUtil.getString(R.string.me_shield_room), () -> {
UserModel.get().addReport(roomInfo.getUid(), 1)
.subscribe(new BeanObserver<String>() {
@Override
public void onErrorMsg(String error) {
dialogManager.dismissDialog();
dismiss();
ToastUtils.show(error);
}
@Override
public void onSuccess(String s) {
ToastUtils.show(ResUtil.getString(R.string.me_shield_success));
dialogManager.dismissDialog();
EventBus.getDefault().post(new RoomShieldEvent());
EventBus.getDefault().post(new RoomExitEvent());
dismiss();
}
});
});
buttonItems.add(buttonItem1);
ButtonItem buttonItem2 = new ButtonItem(ResUtil.getString(R.string.layout_dialog_exit_room_01), () -> {
UIHelper.showReportPage(
context,
roomInfo.getUid(),
XChatConstants.REPORT_TYPE_ROOM
);
dialogManager.dismissDialog();
dismiss();
});
buttonItems.add(buttonItem2);
dialogManager.showCommonPopupDialog(
buttonItems,
ResUtil.getString(R.string.cancel)
);
}
));
}
@Override
protected void onStop() {
super.onStop();

View File

@@ -36,6 +36,7 @@ import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.BottomViewListenerWrapper
import com.yizhuan.erban.avroom.SoftKeyBoardListener
import com.yizhuan.erban.avroom.SoftKeyBoardListener.OnSoftKeyBoardChangeListener
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.avroom.activity.RoomInviteActivity
import com.yizhuan.erban.avroom.activity.RoomTitleEditActivity
import com.yizhuan.erban.avroom.adapter.OnMicroItemClickListener

View File

@@ -25,18 +25,6 @@ class RoomCommonAdapter : BaseQuickAdapter<HomeRoomInfo, BaseViewHolder>(R.layou
helper.setGone(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)
}
}
}

View File

@@ -1,107 +0,0 @@
package com.yizhuan.erban.home.fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.activity.AVRoomActivity;
import com.yizhuan.erban.base.BaseFragment;
import com.yizhuan.erban.common.EmptyViewHelper;
import com.yizhuan.erban.home.adapter.HomePlayAdapter;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo;
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent;
import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.event.LoadLoginUserInfoEvent;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
/**
* create by lvzebiao @2020/1/7
*/
public class HomePlayFragment extends BaseFragment {
private RecyclerView recyclerView;
private HomePlayAdapter playAdapter;
private RVDelegate<HomeRoomInfo> rvDelegate;
public static HomePlayFragment newInstance() {
HomePlayFragment fragment = new HomePlayFragment();
Bundle bundle = new Bundle();
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getRootLayoutId() {
return R.layout.fragment_home_play;
}
@Override
public void initiate() {
recyclerView = mView.findViewById(R.id.recycler_view);
EventBus.getDefault().register(this);
playAdapter = new HomePlayAdapter();
rvDelegate = new RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(playAdapter)
.setLayoutManager(new LinearLayoutManager(mContext))
.setRecyclerView(recyclerView)
.setEmptyView(EmptyViewHelper.createEmptyView(getContext(), ResUtil.getString(R.string.home_fragment_homeplayfragment_01)))
.build();
playAdapter.setOnItemClickListener((adapter, view, position) -> {
HomeRoomInfo homePlayInfo = playAdapter.getItem(position);
if (homePlayInfo != null) {
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_KH_ROOM_SUCCESS, ResUtil.getString(R.string.home_fragment_homeplayfragment_02));
AVRoomActivity.startForFromType(mContext, homePlayInfo.getUid(), AVRoomActivity.FROM_TYPE_RECOMMEND);
}
});
}
@Override
public void onResume() {
super.onResume();
loadData(true);
}
@SuppressLint("CheckResult")
private void loadData(boolean refresh) {
GameHomeModel.get().getHomePlayV2()
.compose(bindToLifecycle())
.subscribe((homePlayInfoList, throwable) -> {
if (throwable != null) {
rvDelegate.loadErr(refresh);
} else {
rvDelegate.loadData(homePlayInfoList, refresh);
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) {
if (isResumed()) loadData(true);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
if (isResumed()) loadData(true);
}
@Override
public void onDestroyView() {
EventBus.getDefault().unregister(this);
super.onDestroyView();
}
}

View File

@@ -17,11 +17,9 @@ import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.xchat_android_core.home.bean.HomeTabMapInfo;
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent;
import com.yizhuan.xchat_android_core.home.model.GameHomeModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.utils.ListUtils;
import com.yizhuan.xchat_android_library.utils.ResUtil;
import com.zhpan.bannerview.BannerViewPager;
import org.greenrobot.eventbus.EventBus;
@@ -46,6 +44,9 @@ public class HomeTabHomeFragment extends BaseFragment {
private BannerViewPager<HomeTabMapInfo> mBanner;
//是否需要刷新接口进行屏蔽房间操作
private boolean isShield = false;
public static HomeTabHomeFragment newInstance() {
HomeTabHomeFragment fragment = new HomeTabHomeFragment();
return fragment;
@@ -198,6 +199,15 @@ public class HomeTabHomeFragment extends BaseFragment {
EventBus.getDefault().register(this);
}
@Override
public void onResume() {
super.onResume();
if(isShield){
getData();
isShield = false;
}
}
@Override
public void onDestroy() {
super.onDestroy();
@@ -209,4 +219,9 @@ public class HomeTabHomeFragment extends BaseFragment {
if (isResumed()) getData();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRoomShieldEvent(RoomShieldEvent event){
isShield = true;
}
}

View File

@@ -1,188 +0,0 @@
package com.yizhuan.erban.home.fragment
import android.graphics.Color
import android.os.Bundle
import android.view.Gravity
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager.widget.ViewPager
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.scwang.smartrefresh.layout.internal.ProgressDrawable
import com.yizhuan.erban.R
import com.yizhuan.erban.avroom.adapter.RoomVPAdapter
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.databinding.FragmentLiveBinding
import com.yizhuan.erban.home.HomeViewModel
import com.yizhuan.erban.home.adapter.HomeLiveTopAdapter
import com.yizhuan.erban.home.adapter.MainMagicIndicatorAdapter
import com.yizhuan.erban.home.adapter.PartyMagicIndicatorAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.room.bean.HomeLiveTopInfo
import com.yizhuan.xchat_android_core.room.bean.SingleRoomSortInfo
import com.yizhuan.xchat_android_core.statistic.StatisticManager
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* Peko首页
*/
class LiveFragment : BaseViewBindingFragment<FragmentLiveBinding>(),
MainMagicIndicatorAdapter.OnItemSelectListener,
PartyMagicIndicatorAdapter.OnItemSelectListener {
private val mFragments: ArrayList<Fragment> = ArrayList()
private val mTabInfoList: ArrayList<String> = ArrayList()
private var currentIndex = 0
private var lastLoadDataTime = 0L
private lateinit var mAdapter: HomeLiveTopAdapter
private lateinit var rvDelegate: RVDelegate<HomeLiveTopInfo.SingleRoom>
private val homeViewModel: HomeViewModel by activityViewModels()
companion object {
fun newInstance(): LiveFragment {
val args = Bundle()
val fragment = LiveFragment()
fragment.arguments = args
return fragment
}
}
override fun init() {
mAdapter = HomeLiveTopAdapter()
rvDelegate = RVDelegate.Builder<HomeLiveTopInfo.SingleRoom>()
.setAdapter(mAdapter)
.setLayoutManager(LinearLayoutManager(mContext, RecyclerView.HORIZONTAL, false))
.setRecyclerView(binding.recyclerView)
.build()
initRefreshView()
homeViewModel.singleRoomSortInfoLiveData.observe(
viewLifecycleOwner
) {
if (it.isSuccess) {
it.data?.let { date -> onGetSingleRoomSortInfoSuccess(date) }
}
}
homeViewModel.homeLiveTopInfoLiveData.observe(viewLifecycleOwner) {
it?.let {
mAdapter.setOnceLookStatus(it.onceLookStatus)
rvDelegate.loadData(it.singleRoomList, true)
binding.tvTitle.text = if (it.onceLookStatus) ResUtil.getString(R.string.home_fragment_livefragment_01) else ResUtil.getString(R.string.home_fragment_livefragment_02)
}
}
binding.viewPager.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_GEBO_TAB_CLICK,
ResUtil.getString(R.string.home_fragment_livefragment_03),
mapOf("tab_name" to mTabInfoList.getOrElse(position) { ResUtil.getString(R.string.home_fragment_livefragment_04) })
)
}
})
}
override fun onResume() {
super.onResume()
loadData()
StatisticManager.Instance().onEvent(
StatisticsProtocol.EVENT_RECENT_CARD_SHOW, ResUtil.getString(R.string.home_fragment_livefragment_05)
)
}
private fun onGetSingleRoomSortInfoSuccess(info: List<SingleRoomSortInfo>) {
var changed = false
val oldTabInfoList: List<CharSequence> = ArrayList<CharSequence>(mTabInfoList)
for (tagInfo in info) {
if (!oldTabInfoList.contains(tagInfo.sortName)) {
changed = true
break
}
}
//只有HomeTagInfo发生改变才刷新数据
if (changed) {
mTabInfoList.clear()
mFragments.clear()
for (tagInfo in info) {
mTabInfoList.add(tagInfo.sortName)
val fragment = RoomSingleFragment.newInstance(tagInfo.id)
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
binding.magicIndicator.navigator = commonNavigator
binding.viewPager.offscreenPageLimit = 2
binding.viewPager.adapter = RoomVPAdapter(
childFragmentManager,
mFragments
)
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
onItemSelect(currentIndex, null)
}
}
private fun initRefreshView() {
binding.refreshLayout.setOnRefreshListener {
binding.refreshLayout.finishRefresh()
EventBus.getDefault().post(RefreshHomeDataEvent())
}
binding.refreshLayout.isEnableLoadmore = false
binding.refreshLayout.isEnableOverScrollBounce = false
val themeColor = requireContext().resources.getColor(R.color.color_666666)
binding.refreshHeader.lastUpdateText.setTextColor(themeColor)
binding.refreshHeader.titleText.setTextColor(themeColor)
binding.refreshHeader.setBackgroundColor(Color.TRANSPARENT)
val progressDrawable = ProgressDrawable()
progressDrawable.setColor(themeColor)
binding.refreshHeader.progressView.setImageDrawable(progressDrawable)
}
override fun onItemSelect(position: Int, view: TextView?) {
currentIndex = position
binding.viewPager.currentItem = currentIndex
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
if (isResumed) {
loadData()
}
}
private fun loadData() {
if (CurrentTimeUtils.getCurrentTime() - lastLoadDataTime < 15 * 1000) return
lastLoadDataTime = CurrentTimeUtils.getCurrentTime()
homeViewModel.requestSingleRoomSortList()
homeViewModel.requestHomeLiveTopInfo()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
}

View File

@@ -19,6 +19,7 @@ import com.yizhuan.erban.home.helper.BannerHelper
import com.yizhuan.erban.home.helper.OpenRoomHelper
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent
import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent
import org.greenrobot.eventbus.EventBus
@@ -34,14 +35,8 @@ class RecommendFragment : BaseViewBindingFragment<FragmentRecommendBinding>() {
private val homeViewModel: HomeViewModel by activityViewModels()
companion object {
fun newInstance(): RecommendFragment {
val args = Bundle()
val fragment = RecommendFragment()
fragment.arguments = args
return fragment
}
}
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
initRefreshView()
@@ -154,6 +149,14 @@ class RecommendFragment : BaseViewBindingFragment<FragmentRecommendBinding>() {
loadData()
}
override fun onResume() {
super.onResume()
if(isShield){
loadData()
isShield = false
}
}
private fun loadData() {
homeViewModel.getBannerInfo()
homeViewModel.getHomePlayV2()
@@ -187,4 +190,9 @@ class RecommendFragment : BaseViewBindingFragment<FragmentRecommendBinding>() {
EventBus.getDefault().unregister(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -14,6 +14,8 @@ import com.yizhuan.erban.home.adapter.RoomCommonAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent
import com.yizhuan.xchat_android_library.common.util.Logger
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -40,6 +42,9 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
private var roomCommonViewModel: RoomCommonViewModel? = null
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
val roomCommonViewModel: RoomCommonViewModel by viewModels()
this.roomCommonViewModel = roomCommonViewModel
@@ -74,6 +79,14 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
@SuppressLint("CheckResult")
fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
@@ -93,6 +106,12 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
// if (isResumed) loadData(true)
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -13,6 +13,7 @@ import com.yizhuan.erban.home.adapter.RoomGameAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -35,6 +36,9 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
private val pageSize = 20
private var homeViewModel: HomeViewModel? = null
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
val homeViewModel: HomeViewModel by viewModels()
this.homeViewModel = homeViewModel
@@ -79,6 +83,14 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
private fun loadData(isRefresh: Boolean) {
binding.refreshLayout.isRefreshing = isRefresh
@@ -103,6 +115,12 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
// if (isResumed) loadData(true)
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -1,77 +0,0 @@
package com.yizhuan.erban.home.fragment
import android.os.Bundle
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.EmptyViewHelper
import com.yizhuan.erban.databinding.FragmentRoomHotBinding
import com.yizhuan.erban.home.HomeViewModel
import com.yizhuan.erban.home.adapter.RoomHotAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_library.utils.ResUtil
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, ResUtil.getString(R.string.home_fragment_roomhotfragment_01)))
.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

@@ -18,6 +18,7 @@ import com.yizhuan.erban.ui.relation.AttentionListActivity
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.room.event.RoomShieldEvent
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -44,6 +45,9 @@ class RoomLikeFragment : BaseViewBindingFragment<FragmentRoomLikeBinding>() {
private val pageSize = 20
private val homeViewModel: HomeViewModel by activityViewModels()
//是否需要刷新接口进行屏蔽房间操作
private var isShield = false
override fun init() {
binding.appBarLayout.addOnOffsetChangedListener(
@@ -109,6 +113,14 @@ class RoomLikeFragment : BaseViewBindingFragment<FragmentRoomLikeBinding>() {
loadData(true)
}
override fun onResume() {
super.onResume()
if(isShield){
loadData(true)
isShield = false
}
}
private fun loadData(isRefresh: Boolean) {
if (isRefresh) {
pageNum = 1
@@ -131,7 +143,12 @@ class RoomLikeFragment : BaseViewBindingFragment<FragmentRoomLikeBinding>() {
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
// if (isResumed) loadData(true)
if (isResumed) loadData(true)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onRoomShieldEvent(event: RoomShieldEvent?){
isShield = true
}
}

View File

@@ -1,88 +0,0 @@
package com.yizhuan.erban.home.fragment
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingFragment
import com.yizhuan.erban.common.EmptyViewHelper
import com.yizhuan.erban.databinding.FragmentRoomSingleBinding
import com.yizhuan.erban.home.RoomSingleViewModel
import com.yizhuan.erban.home.adapter.MoreSingleAnchorAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class RoomSingleFragment : BaseViewBindingFragment<FragmentRoomSingleBinding>() {
companion object {
fun newInstance(id: Long?): RoomSingleFragment {
val args = Bundle()
if (id != null) {
args.putLong("id", id)
}
val fragment = RoomSingleFragment()
fragment.arguments = args
return fragment
}
}
private lateinit var adapter: MoreSingleAnchorAdapter
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
private val pageSize = Int.MAX_VALUE
private val roomSingleViewModel: RoomSingleViewModel by viewModels()
private var lastLoadDataTime = 0L
private val id: Long? by lazy { requireArguments().getLong("id") }
override fun init() {
adapter = MoreSingleAnchorAdapter()
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
.setAdapter(adapter)
.setRecyclerView(binding.recyclerView)
.setRefreshLayout(binding.refreshLayout)
.setEmptyView(EmptyViewHelper.createEmptyView(context, ResUtil.getString(R.string.home_fragment_roomsinglefragment_01)))
.setLayoutManager(GridLayoutManager(mContext, 2))
.setPageSize(pageSize)
.build()
binding.refreshLayout.setOnRefreshListener { loadData(true) }
roomSingleViewModel.singleAnchorMoreLiveData.observe(this) {
rvDelegate.loadData(it)
}
}
override fun onResume() {
super.onResume()
loadData(false)
}
private fun loadData(isForce: Boolean) {
if (!isForce && CurrentTimeUtils.getCurrentTime() - lastLoadDataTime < 15 * 1000) return
lastLoadDataTime = CurrentTimeUtils.getCurrentTime()
binding.refreshLayout.isRefreshing = true
roomSingleViewModel.getMoreSingleAnchorList(id)
}
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(false)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -32,18 +32,6 @@
android:layout_marginTop="52dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_report"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/ic_room_report"
android:drawablePadding="12dp"
android:gravity="center"
android:text="@string/me_shield_report"
android:textColor="@color/white"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_mini_room"
android:layout_width="0dp"

View File

@@ -1,124 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.layout.SmartRefreshLayout 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">
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:id="@+id/refresh_header"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<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.yizhuan.erban.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="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:orientation="vertical"
android:paddingTop="15dp"
android:paddingBottom="15dp">
<View
android:id="@+id/view_bg"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/home_live_bg_top_history"
app:layout_constraintDimensionRatio="690:254"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginTop="6dp"
android:drawableStart="@drawable/home_live_ic_top_like"
android:drawablePadding="4dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/layout_fragment_live_01"
android:textColor="@color/color_333333"
android:textSize="14dp"
app:layout_constraintStart_toStartOf="@id/view_bg"
app:layout_constraintTop_toTopOf="@id/view_bg" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_rv_top"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.284" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_rv_bottom"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.945" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
android:overScrollMode="never"
android:paddingStart="7dp"
android:paddingEnd="7dp"
android:scrollbars="none"
app:layout_constraintBottom_toBottomOf="@id/line_rv_bottom"
app:layout_constraintEnd_toEndOf="@id/view_bg"
app:layout_constraintStart_toStartOf="@id/view_bg"
app:layout_constraintTop_toBottomOf="@id/line_rv_top" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<FrameLayout
android:id="@+id/fl_indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dp">
<com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
android:id="@+id/magic_indicator"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_marginStart="7dp" />
</FrameLayout>
</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>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

View File

@@ -1,7 +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" />

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">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingStart="9dp"
android:paddingEnd="9dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -101,60 +101,4 @@
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"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<com.yizhuan.erban.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.yizhuan.erban.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.yizhuan.erban.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.yizhuan.erban.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.yizhuan.erban.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,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="2dp" />

View File

@@ -0,0 +1,8 @@
package com.yizhuan.xchat_android_core.room.event;
import lombok.Data;
@Data
public class RoomExitEvent {
}

View File

@@ -0,0 +1,7 @@
package com.yizhuan.xchat_android_core.room.event;
import lombok.Data;
@Data
public class RoomShieldEvent {
}