我的页面UI修改和数据刷新逻辑优化

This commit is contained in:
huangjian
2022-08-04 18:58:55 +08:00
parent 599f247bf5
commit 0ab9d2d56e
6 changed files with 56 additions and 104 deletions

View File

@@ -20,12 +20,16 @@ class MeViewModel : BaseViewModel() {
val gameInfoListLiveData: LiveData<List<List<GameInfo>>> = _gameInfoListLiveData
init {
refreshData()
}
fun refreshData() {
getBannerInfo()
requestMeCenterInfoList()
getGameList()
}
fun getBannerInfo() {
private fun getBannerInfo() {
safeLaunch(
block = {
_bannerLiveData.value = HomeModel.getHomeBanner("10")
@@ -36,7 +40,7 @@ class MeViewModel : BaseViewModel() {
)
}
fun requestMeCenterInfoList() {
private fun requestMeCenterInfoList() {
safeLaunch(
block = {
_meCenterInfoLiveData.value = transformList(HomeModel.requestMeCenterInfoList(), 8)
@@ -47,7 +51,7 @@ class MeViewModel : BaseViewModel() {
)
}
fun getGameList() {
private fun getGameList() {
safeLaunch(
block = {
_gameInfoListLiveData.value = transformList(HomeModel.getGameList(), 4)

View File

@@ -26,7 +26,6 @@ import com.yizhuan.erban.home.HomeViewModel
import com.yizhuan.erban.home.MeViewModel
import com.yizhuan.erban.home.activity.RoomHistoryListActivity
import com.yizhuan.erban.home.activity.VisitorListActivity
import com.yizhuan.erban.home.adapter.BannerAdapter
import com.yizhuan.erban.home.adapter.MeCenterAdapter
import com.yizhuan.erban.home.adapter.MeGameAdapter
import com.yizhuan.erban.home.helper.BannerHelper
@@ -42,15 +41,12 @@ import com.yizhuan.erban.ui.widget.OnPageSelectedListener
import com.yizhuan.erban.vip.VipMainActivity
import com.yizhuan.erban.vip.VipViewModel
import com.yizhuan.xchat_android_core.auth.AuthModel
import com.yizhuan.xchat_android_core.home.bean.BannerInfo
import com.yizhuan.xchat_android_core.home.event.VisitorUnreadCountEvent
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment
import com.yizhuan.xchat_android_core.level.UserLevelVo
import com.yizhuan.xchat_android_core.manager.IMNetEaseManager
import com.yizhuan.xchat_android_core.manager.RelationShipEvent
import com.yizhuan.xchat_android_core.noble.NobleProtocol
import com.yizhuan.xchat_android_core.noble.NobleUtil
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.pay.event.GetWalletInfoEvent
import com.yizhuan.xchat_android_core.pay.event.UpdateWalletInfoEvent
import com.yizhuan.xchat_android_core.room.bean.MeCenterInfo
import com.yizhuan.xchat_android_core.room.bean.RoomInfo
@@ -61,9 +57,7 @@ import com.yizhuan.xchat_android_core.user.UserModel
import com.yizhuan.xchat_android_core.user.bean.UserInfo
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils
import com.yizhuan.xchat_android_core.utils.LogUtils
import com.yizhuan.xchat_android_core.utils.StarUtils
import com.yizhuan.xchat_android_library.rxbus.RxBusHelper
import com.yizhuan.xchat_android_library.utils.FormatUtils
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -109,18 +103,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
override fun initiate() {
EventBus.getDefault().register(this)
vipViewModel.getVipPageInfo()
RxBusHelper.doOnMainThread(
NobleProtocol::class.java,
mCompositeDisposable
) { nobleProtocol: NobleProtocol ->
val second = nobleProtocol.second
if (second == CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE || second == CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE) {
requestUpdateUserInfo()
} else if (second == CustomAttachment.CUSTOM_MESS_SUB_HADEXPIRE) {
mBinding.ivUserNobleLevel.visibility = View.GONE
mBinding.ivAvatarHeadWear.visibility = View.GONE
}
}
mCompositeDisposable.add(
IMNetEaseManager.get()
.relationShipEventObservable
@@ -129,10 +112,6 @@ class MeFragment : BaseFragment(), View.OnClickListener {
}
)
val walletInfo = PayModel.get().currentWalletInfo
if (walletInfo != null) {
mBinding.tvDiamondNum.text = FormatUtils.formatBigInteger(walletInfo.diamondNum)
}
meViewModel.bannerLiveData.observe(viewLifecycleOwner) {
BannerHelper.setBanner(
mBinding.rollView, it
@@ -165,11 +144,13 @@ class MeFragment : BaseFragment(), View.OnClickListener {
)
}
}
homeViewModel.openGameRoomLiveData.observe(viewLifecycleOwner) {
it?.let {
OpenRoomHelper.openRoom(mContext as BaseActivity, RoomInfo.ROOMTYPE_GAME, it)
}
}
vipViewModel.myVipInfoLiveData.observe(viewLifecycleOwner) {
it?.let {
mBinding.ivVipIcon.isVisible = true
@@ -180,11 +161,13 @@ class MeFragment : BaseFragment(), View.OnClickListener {
mBinding.tvNextVipName.text = it.nextVipName
mBinding.seekBarVip.max = it.levelUpScore
mBinding.seekBarVip.progress = it.currScore.coerceAtMost(it.levelUpScore)
mBinding.meItemVip.setBackgroundResource(R.drawable.bg_vip_me_entrance_opened)
} ?: run {
mBinding.ivVipIcon.isVisible = false
mBinding.flVipSeek.isVisible = false
mBinding.tvVipName.text = "贵族中心"
mBinding.tvVipDesc.text = "开通贵族立享各项特权>>"
mBinding.meItemVip.setBackgroundResource(R.drawable.bg_vip_me_entrance)
}
}
@@ -316,57 +299,26 @@ class MeFragment : BaseFragment(), View.OnClickListener {
override fun onResume() {
super.onResume()
initUserDate()
requestUpdateUserInfo()
LogUtils.d("onResume")
}
private fun initUserDate() {
mUserInfo = UserModel.get().cacheLoginUserInfo
setUserData()
if (mUserInfo?.isReview == true) {
requestUpdateUserInfo()
}
}
@SuppressLint("SetTextI18n")
private fun setUserData() {
mUserInfo = UserModel.get().cacheLoginUserInfo
mUserInfo?.let {
mBinding.userInfo = mUserInfo
mBinding.tvUserId.text = String.format(
Locale.getDefault(),
getString(R.string.text_user_id), it.erbanNo.toString()
)
val nobleInfo = it.nobleInfo
val headWearInfo = it.userHeadwear
if (headWearInfo != null) {
mBinding.ivAvatarHeadWear.setImageDrawable(null)
if (nobleInfo != null) {
mBinding.ivUserNobleLevel.visibility = View.VISIBLE
NobleUtil.loadResource(
NobleUtil.getBadgeByLevel(nobleInfo.level),
mBinding.ivUserNobleLevel
)
} else {
mBinding.ivUserNobleLevel.visibility = View.GONE
}
NobleUtil.loadHeadWear(
if (headWearInfo.effect != null) headWearInfo.effect else headWearInfo.pic,
mBinding.ivAvatarHeadWear
)
} else if (nobleInfo != null) {
mBinding.ivUserNobleLevel.visibility = View.VISIBLE
NobleUtil.loadResource(
NobleUtil.getBadgeByLevel(nobleInfo.level),
mBinding.ivUserNobleLevel
)
mBinding.ivAvatarHeadWear.setImageDrawable(null)
NobleUtil.loadResource(nobleInfo.headWear, mBinding.ivAvatarHeadWear)
} else {
mBinding.ivAvatarHeadWear.setImageDrawable(null)
mBinding.ivUserNobleLevel.visibility = View.GONE
}
val star = StarUtils.getConstellation(Date(it.birth))
mBinding.tvConstellation.text = star
setUserLevel(it.userLevelVo)
initNewUserCharge(it)
setWalletInfo()
}
}
@@ -428,17 +380,26 @@ class MeFragment : BaseFragment(), View.OnClickListener {
}
}
private fun setWalletInfo() {
mBinding.tvDiamondNum.text =
FormatUtils.formatBigInteger(PayModel.get().currentWalletInfo?.diamondNum ?: 0.0)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onLoginUserInfoUpdateEvent(event: LoginUserInfoUpdateEvent?) {
mUserInfo = UserModel.get().cacheLoginUserInfo
setUserData()
vipViewModel.getVipPageInfo()
meViewModel.refreshData()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) {
mBinding.tvDiamondNum.text =
FormatUtils.formatBigInteger(PayModel.get().currentWalletInfo?.diamondNum ?: 0.0)
setWalletInfo()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onGetWalletInfoEvent(event: GetWalletInfoEvent?) {
setWalletInfo()
}
@SuppressLint("SetTextI18n")
@@ -453,9 +414,7 @@ class MeFragment : BaseFragment(), View.OnClickListener {
}
private fun requestUpdateUserInfo() {
if (mUserInfo != null) {
UserModel.get().updateCurrentUserInfo().subscribe()
}
UserModel.get().updateCurrentUserInfo().subscribe()
}
override fun onClick(v: View) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -44,9 +44,8 @@
android:id="@+id/me_item_setting"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="end"
android:layout_marginTop="50dp"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="36dp"
android:layout_marginEnd="@dimen/dp_5"
android:onClick="@{click}"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
@@ -66,16 +65,17 @@
android:id="@+id/rl_user_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:onClick="@{click}"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/me_item_setting">
app:layout_constraintTop_toTopOf="@id/me_item_setting">
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_user_head"
avatarUrl="@{TextUtils.isEmptyText(userInfo.newAvatar)?userInfo.avatar:userInfo.newAvatar}"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_width="68dp"
android:layout_height="68dp"
android:layout_marginStart="20dp"
android:layout_marginTop="@dimen/dp_10"
android:onClick="@{click}"
@@ -84,61 +84,50 @@
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_width="68dp"
android:layout_height="16dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_avatar_auditing"
android:visibility="@{userInfo.isReview()?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toBottomOf="@id/iv_user_head"
app:layout_constraintLeft_toLeftOf="@id/iv_user_head"
app:layout_constraintRight_toRightOf="@id/iv_user_head" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_avatar_head_wear"
android:layout_width="67dp"
android:layout_height="67dp"
app:layout_constraintBottom_toBottomOf="@id/iv_user_head"
app:layout_constraintLeft_toLeftOf="@id/iv_user_head"
app:layout_constraintRight_toRightOf="@id/iv_user_head"
app:layout_constraintTop_toTopOf="@id/iv_user_head"
tools:background="#1Aff0000" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_user_info"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="15dp"
app:layout_constraintBottom_toBottomOf="@id/iv_user_head"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toStartOf="@id/me_item_skill"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/iv_user_head"
app:layout_constraintTop_toTopOf="@id/iv_user_head">
<TextView
android:id="@+id/tv_user_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:drawablePadding="5dp"
android:ellipsize="end"
android:maxLines="1"
android:text="@{userInfo.nick}"
android:textColor="@color/text_title_white"
android:textSize="@dimen/sp_16"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="wrap"
app:layout_goneMarginStart="0dp"
tools:text="党移动地下党" />
tools:text="党移动党移动地下党党移动地下党党移动地下党地下党" />
<LinearLayout
android:id="@+id/ll_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
@@ -191,7 +180,7 @@
android:id="@+id/ll_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_id">
@@ -265,7 +254,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="10dp"
android:baselineAligned="false"
android:gravity="bottom"
@@ -433,7 +422,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="15dp"
android:layout_marginTop="16dp"
android:layout_marginTop="12dp"
android:background="@drawable/bg_me_wallet_entrance"
android:gravity="center_vertical"
android:onClick="@{click}"
@@ -453,7 +442,7 @@
android:maxLines="1"
android:text="0"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_18"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
tools:text="999" />
@@ -466,7 +455,7 @@
android:maxLines="1"
android:text="钻石充值"
android:textColor="@color/black_transparent_30"
android:textSize="@dimen/sp_12" />
android:textSize="@dimen/sp_10" />
</LinearLayout>
@@ -508,7 +497,7 @@
android:maxLines="1"
android:text="贵族中心"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_18"
android:textSize="@dimen/sp_16"
android:textStyle="bold" />
</LinearLayout>
@@ -554,7 +543,8 @@
android:includeFontPadding="false"
android:text="神皇"
android:textColor="#66333333"
android:textSize="8sp" />
android:textSize="8sp"
android:visibility="gone" />
</FrameLayout>
@@ -624,7 +614,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="快捷进房"
android:text="休闲游戏"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="@dimen/sp_14"
android:textStyle="bold" />
@@ -657,7 +647,6 @@
android:layout_marginTop="16dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="345:80"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"