diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a23e7b20f..99da8afaa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -857,6 +857,10 @@
android:name=".pay.activity.GiveGoldActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
+
) :FragmentPagerAdapter(fm,
+ BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){
+ override fun getCount()=list.size
+
+ override fun getItem(position: Int)=list[position]
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
index e57817fe8..c7ecca48b 100644
--- a/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/MeFragment.kt
@@ -233,22 +233,25 @@ class MeFragment : BaseFragment(), View.OnClickListener {
mBinding.tvConstellation.text = star
setUserLevel(it.userLevelVo)
setWalletInfo()
- }
- val initInfo = InitialModel.get().cacheInitInfo
- val list = initInfo?.giveDiamondErbanNoList
- if (list?.contains(mUserInfo?.erbanNo ?: 0L) == true) {
- mBinding.tvMyRoomRight.visibility = View.GONE
- mBinding.tvMyRoom.visibility = View.VISIBLE
- mBinding.tvEarnRight.visibility = View.GONE
- mBinding.tvEarn.visibility = View.VISIBLE
- mBinding.llCleanDiamonds.visibility = View.VISIBLE
- } else {
- mBinding.tvMyRoomRight.visibility = View.VISIBLE
- mBinding.tvMyRoom.visibility = View.GONE
- mBinding.tvEarnRight.visibility = View.VISIBLE
- mBinding.tvEarn.visibility = View.GONE
- mBinding.llCleanDiamonds.visibility = View.GONE
+ val initInfo = InitialModel.get().cacheInitInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = it.userLevelVo.experLevelSeq
+ if (diamondList?.contains(it.erbanNo) == true || giftList?.contains(it.erbanNo) == true
+ || levelSep > (initInfo?.giveDiamondExperLevel ?: 0) || levelSep > (initInfo?.giveGiftExperLevel ?: 0)) {
+ mBinding.tvMyRoomRight.visibility = View.GONE
+ mBinding.tvMyRoom.visibility = View.VISIBLE
+ mBinding.tvEarnRight.visibility = View.GONE
+ mBinding.tvEarn.visibility = View.VISIBLE
+ mBinding.llCleanDiamonds.visibility = View.VISIBLE
+ } else {
+ mBinding.tvMyRoomRight.visibility = View.VISIBLE
+ mBinding.tvMyRoom.visibility = View.GONE
+ mBinding.tvEarnRight.visibility = View.VISIBLE
+ mBinding.tvEarn.visibility = View.GONE
+ mBinding.llCleanDiamonds.visibility = View.GONE
+ }
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt b/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
index 9455f32d4..dc0fe10e5 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/GiveGoldModel.kt
@@ -11,12 +11,20 @@ import com.yizhuan.xchat_android_core.utils.toast
class GiveGoldModel : BaseViewModel() {
private val _diamondGiveHistoryLiveData = MutableLiveData?>()
- val diamondGiveHistoryLiveData: MutableLiveData?> = _diamondGiveHistoryLiveData
+ val diamondGiveHistoryLiveData: MutableLiveData?> =
+ _diamondGiveHistoryLiveData
private val _searchUserLiveData = MutableLiveData()
val searchUserLiveData: MutableLiveData = _searchUserLiveData
- fun getDiamondListInfo(pageNum:Int, pageSize: Int) {
+ private val _giveGiftLiveData = MutableLiveData()
+ val giveGiftLiveData: MutableLiveData = _giveGiftLiveData
+
+ private val _giveDetailLiveData = MutableLiveData?>()
+ val giveDetailLiveData: MutableLiveData?> =
+ _giveDetailLiveData
+
+ fun getDiamondListInfo(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
_diamondGiveHistoryLiveData.value = ListResult.failed(pageNum)
@@ -28,7 +36,7 @@ class GiveGoldModel : BaseViewModel() {
)
}
- fun getSearchUserInfo(erbanNo:Long) {
+ fun getSearchUserInfo(erbanNo: Long) {
safeLaunch(
true,
onError = {
@@ -41,4 +49,29 @@ class GiveGoldModel : BaseViewModel() {
)
}
+ fun giveGift(toUid: Long, giftId: Int, giftNum: Int) {
+ safeLaunch(
+ true,
+ onError = {
+ it.message.toast()
+ _giveGiftLiveData.value = null
+ },
+ block = {
+ _giveGiftLiveData.value = HomeModel.giveGift(toUid, giftId, giftNum)
+ }
+ )
+ }
+
+ fun giveDetailInfo(uid: Long, type: Int, pageNum: Int, pageSize: Int) {
+ safeLaunch(
+ onError = {
+ _giveDetailLiveData.value = ListResult.failed(pageNum)
+ },
+ block = {
+ val result = HomeModel.getGiveDetail(uid, type, pageNum, pageSize)
+ _giveDetailLiveData.value = ListResult.success(result, pageNum)
+ }
+ )
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
index a92d6c12e..82d79e6d7 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldActivity.kt
@@ -17,6 +17,7 @@ import com.yizhuan.erban.databinding.ActivityGiveGoldBinding
import com.yizhuan.erban.pay.GiveGoldModel
import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.gift.GiftModel
import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
@@ -40,7 +41,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
}
override fun init() {
- initTitleBar(ResUtil.getString(R.string.me_clean_diamond))
+ initTitleBar(ResUtil.getString(R.string.me_donation))
binding.etSearch.setOnEditorActionListener(OnEditorActionListener { v, actionId, event -> //以下方法防止两次发送请求
if (actionId == EditorInfo.IME_ACTION_SEARCH && event != null || event != null && event.keyCode == KeyEvent.KEYCODE_ENTER) {
if (event.action == KeyEvent.ACTION_UP) { //发送请求
@@ -80,9 +81,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
.setRecyclerView(binding.recyclerView)
.build()
mAdapter.setOnItemClickListener { _, _, position ->
- mAdapter.getItem(position)?.let {
- GiveGoldToUserActivity.start(this, it)
- }
+ mAdapter.getItem(position)?.targetUid?.let { GiveGoldDetailActivity.start(this, it) }
}
mAdapter.setOnLoadMoreListener({
loadData(false)
@@ -102,6 +101,7 @@ class GiveGoldActivity : BaseViewBindingActivity() {
if (it) dialogManager.showProgressDialog(this)
else dialogManager.dismissDialog()
}
+ GiftModel.get().knapList
}
override fun onResume() {
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt
new file mode 100644
index 000000000..89c0c0bb2
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldDetailActivity.kt
@@ -0,0 +1,115 @@
+package com.yizhuan.erban.pay.activity
+
+import android.content.Context
+import android.content.Intent
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.fragment.app.Fragment
+import androidx.viewpager.widget.ViewPager
+import com.netease.nim.uikit.StatusBarUtil
+import com.yizhuan.erban.R
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityGiveGoldDetailBinding
+import com.yizhuan.erban.pay.fragment.GiveDiamondFragment
+import com.yizhuan.erban.pay.fragment.GiveGiftFragment
+import com.yizhuan.erban.ui.user.adapter.CommonWrapIndicatorAdapter
+import com.yizhuan.erban.ui.user.adapter.UserInfoPagerAdapter
+import com.yizhuan.erban.ui.widget.magicindicator.MagicIndicator
+import com.yizhuan.erban.ui.widget.magicindicator.ViewPagerHelper
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
+import com.yizhuan.xchat_android_core.initial.InitialModel
+import com.yizhuan.xchat_android_core.user.UserModel
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+/**
+ * 轉贈鉆石頁面
+ */
+class GiveGoldDetailActivity : BaseViewBindingActivity() {
+
+ companion object {
+ fun start(context: Context, uid: Long) {
+ val intent = Intent(context, GiveGoldDetailActivity::class.java)
+ intent.putExtra("uid", uid)
+ context.startActivity(intent)
+ }
+ }
+
+ override fun init() {
+ initTitleBar(ResUtil.getString(R.string.me_donation_detail))
+ initDetail()
+ }
+
+ /**
+ * 轉贈詳情
+ */
+ private fun initDetail() {
+ val uid = intent.extras?.getLong("uid", 0L) ?: 0L
+
+ val initInfo = InitialModel.get().cacheInitInfo
+ val userInfo = UserModel.get().cacheLoginUserInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = userInfo?.userLevelVo?.experLevelSeq ?: 0
+
+ val viewPager: ViewPager = binding.viewPagerDetail
+ val magicIndicator: MagicIndicator = binding.magicIndicator
+ val fragmentList: MutableList = ArrayList()
+ val pagerAdapter = UserInfoPagerAdapter(supportFragmentManager, fragmentList)
+ val tagList: MutableList = ArrayList()
+ if (diamondList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveDiamondExperLevel
+ ?: 0)
+ ) {
+ tagList.add(getString(R.string.diamond))
+ fragmentList.add(GiveDiamondFragment.newInstance(uid))
+ }
+ if (giftList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveGiftExperLevel
+ ?: 0)
+ ) {
+ tagList.add(getString(R.string.gift_action))
+ fragmentList.add(GiveGiftFragment.newInstance(uid))
+ }
+ if (tagList.size == 0) {
+ return
+ }else if(tagList.size == 1){
+ binding.magicIndicator.visibility = View.GONE
+ }
+ val commonNavigator = CommonNavigator(context)
+ commonNavigator.isAdjustMode = true//自我调节位置,实现自我平分
+ val magicIndicatorAdapter = CommonWrapIndicatorAdapter(context, tagList)
+ magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
+ viewPager.currentItem = position
+ }
+ commonNavigator.adapter = magicIndicatorAdapter
+ magicIndicator.navigator = commonNavigator
+ commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE
+ viewPager.adapter = pagerAdapter
+ ViewPagerHelper.bind(magicIndicator, viewPager)
+ viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+ }
+
+ override fun onPageSelected(position: Int) {
+ viewPager.requestLayout()
+ }
+
+ override fun onPageScrollStateChanged(state: Int) {}
+ })
+
+ }
+
+ override fun setStatusBar() {
+ super.setStatusBar()
+ StatusBarUtil.transparencyBar(this)
+ StatusBarUtil.StatusBarLightMode(this)
+ }
+
+ override fun needSteepStateBar(): Boolean {
+ return true
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
index 4d2b5011a..6e3449922 100644
--- a/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
+++ b/app/src/main/java/com/yizhuan/erban/pay/activity/GiveGoldToUserActivity.kt
@@ -3,39 +3,51 @@ package com.yizhuan.erban.pay.activity
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
-import android.os.Bundle
import android.text.Editable
import android.text.InputFilter
import android.text.InputFilter.LengthFilter
import android.text.TextWatcher
+import android.util.SparseArray
+import android.view.View
+import android.view.ViewGroup
+import androidx.activity.viewModels
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.viewpager.widget.PagerAdapter
+import com.chad.library.adapter.base.BaseQuickAdapter
import com.jungly.gridpasswordview.GridPasswordView
import com.netease.nim.uikit.StatusBarUtil
import com.yizhuan.erban.R
-import com.yizhuan.erban.base.BaseActivity
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityGiveGoldToUserBinding
+import com.yizhuan.erban.miniworld.listener.DoubleClickCheckListener
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.adapter.GiveGiftAdapter
import com.yizhuan.erban.pay.password.GiveGoldPassWordFragment
import com.yizhuan.erban.ui.setting.ModifyPwdActivity
import com.yizhuan.erban.ui.utils.ImageLoadUtils
+import com.yizhuan.erban.ui.widget.OnPageSelectedListener
import com.yizhuan.erban.ui.widget.dialog.CommonTipDialog
import com.yizhuan.erban.ui.widget.dialog.GiveDiamondTipDialog
+import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil
+import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration
import com.yizhuan.xchat_android_core.DemoCache
+import com.yizhuan.xchat_android_core.gift.GiftModel
+import com.yizhuan.xchat_android_core.gift.bean.GiftInfo
+import com.yizhuan.xchat_android_core.initial.InitialModel
import com.yizhuan.xchat_android_core.pay.PayModel
import com.yizhuan.xchat_android_core.user.UserModel
-import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
import com.yizhuan.xchat_android_core.user.bean.SearchUserInfo
import com.yizhuan.xchat_android_library.utils.ResUtil
import kotlinx.android.synthetic.main.activity_give_gold_to_user.*
-class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChangedListener,
+class GiveGoldToUserActivity : BaseViewBindingActivity(),
+ GridPasswordView.OnPasswordChangedListener,
TextWatcher {
- companion object {
- @JvmStatic
- fun start(context: Context, user: DiamondGiveHistoryInfo) {
- val intent = Intent(context, GiveGoldToUserActivity::class.java)
- intent.putExtra("user", user)
- context.startActivity(intent)
- }
+ private val giveGoldModel: GiveGoldModel by viewModels()
+ companion object {
@JvmStatic
fun start(context: Context, searchUser: SearchUserInfo) {
val intent = Intent(context, GiveGoldToUserActivity::class.java)
@@ -44,17 +56,13 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
}
}
- private var userInfo: DiamondGiveHistoryInfo? = null
private var searchUserInfo: SearchUserInfo? = null
private var passWordFragment: GiveGoldPassWordFragment? = null
+ private var selectGiftPos = -1
+ private var giftAllCount = -1
+ private var giftId = -1
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_give_gold_to_user)
- userInfo = intent.getSerializableExtra("user") as DiamondGiveHistoryInfo?
- searchUserInfo = intent.getSerializableExtra("searchUser") as SearchUserInfo?
- init()
- }
+ private var centerIndex = 0
override fun setStatusBar() {
super.setStatusBar()
@@ -66,153 +74,278 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
return true
}
- @SuppressLint("SetTextI18n")
- private fun init() {
- initTitleBar(ResUtil.getString(R.string.me_clean_diamond))
+ override fun init() {
+ initTitleBar(ResUtil.getString(R.string.donation_to))
+ searchUserInfo = intent.getSerializableExtra("searchUser") as SearchUserInfo?
+ searchUserInfo?.apply {
+ binding.tvId.text = "ID:${erbanNo}"
+ binding.tvNickname.text = nick
+ ImageLoadUtils.loadAvatar(context, avatar, binding.ivAvatar)
+ }
+ val initInfo = InitialModel.get().cacheInitInfo
+ val userInfo = UserModel.get().cacheLoginUserInfo
+ val diamondList = initInfo?.giveDiamondErbanNoList
+ val giftList = initInfo?.giveGiftErbanNoList
+ val levelSep = userInfo?.userLevelVo?.experLevelSeq ?: 0
+ if (diamondList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveDiamondExperLevel
+ ?: 0)
+ ) {
+ binding.tvGiftTab.visibility = View.VISIBLE
+ } else {
+ binding.tvGiftTab.visibility = View.GONE
+ }
+ if (giftList?.contains(userInfo?.erbanNo) == true || levelSep > (initInfo?.giveGiftExperLevel
+ ?: 0)
+ ) {
+ binding.tvGiftTab.visibility = View.VISIBLE
+ } else {
+ binding.tvGiftTab.visibility = View.GONE
+ }
+ binding.viewPagerEntrance.addOnPageChangeListener(object : OnPageSelectedListener() {
+ override fun onPageSelected(position: Int) {
+ centerIndex = position
+ binding.magicIndicatorEntrance.setSelectedPage(position)
+ }
+ })
+ initDiamond()
+ initGift()
+ initListener()
+ giveGoldModel.loadingLiveData.observe(this) {
+ if (it) dialogManager.showProgressDialog(this)
+ else dialogManager.dismissDialog()
+ }
+ giveGoldModel.giveGiftLiveData.observe(this) {
+ it?.let {
+ toast(getString(R.string.gift_give_success))
+ finish()
+ }
+ }
+ }
+
+ private fun initListener() {
+ binding.tvSure.setOnClickListener {
+ val initInfo = DemoCache.readInitInfo()
+ if (binding.groupDiamond.visibility == View.VISIBLE) {
+ searchUserInfo?.apply {
+ val gold = binding.mEditGold.text.toString().toInt()
+ if (gold <= 0) {
+ toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
+ return@setOnClickListener
+ }
+ UserModel.get().cacheLoginUserInfo?.let {
+ if (!it.isBindPaymentPwd) {
+ val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
+ tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
+ tipDialog.setOkText(getString(R.string.to_setting))
+ tipDialog.setOnActionListener(
+ object : CommonTipDialog.OnActionListener {
+ override fun onOk() {
+ ModifyPwdActivity.start(
+ this@GiveGoldToUserActivity,
+ ModifyPwdActivity.PAY_PWD
+ )
+ }
+ }
+ )
+ tipDialog.show()
+ } else {
+ val rateGold = initInfo.giveDiamondRate * 100
+ val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
+ tipDialog.setTvDiamond(gold.toString())
+ tipDialog.setTipMsg(getString(R.string.give_gold_to_user, nick))
+ if (rateGold == 0.0) {
+ tipDialog.setTipMessageGone(true)
+ } else {
+ tipDialog.setTvSeCharge("${rateGold.toInt()}%")
+ val goldNew = gold + (gold * initInfo.giveDiamondRate)
+ tipDialog.setTvConsumeDiamond(
+ getString(
+ R.string.consume_diamond_num,
+ goldNew.toString()
+ )
+ )
+ }
+ tipDialog.setOnActionListener(
+ object : GiveDiamondTipDialog.OnActionListener {
+ override fun onOk() {
+ GiveGoldPassWordFragment.newInstance(
+ supportFragmentManager,
+ gold.toString(),
+ nick,
+ ""
+ )
+ .apply {
+ passWordFragment = this
+ setListener(this@GiveGoldToUserActivity)
+ }
+ }
+ }
+ )
+ tipDialog.show()
+ }
+ } ?: run {
+ toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
+ return@setOnClickListener
+ }
+ }
+ } else {//赠送礼物
+ searchUserInfo?.apply {
+ val giftNum = binding.editGift.text.toString().toInt()
+ if (selectGiftPos < 0) {
+ toast(ResUtil.getString(R.string.please_select_gift))
+ return@setOnClickListener
+ } else if (giftNum == 0) {
+ toast(ResUtil.getString(R.string.please_enter_gift_num))
+ return@setOnClickListener
+ } else if (giftNum > giftAllCount) {
+ toast(ResUtil.getString(R.string.gift_num_fail))
+ return@setOnClickListener
+ }
+ giveGoldModel.giveGift(uid, giftId, giftNum)
+ }
+ }
+ }
+ }
+
+ private fun initDiamond() {
+ if (binding.tvGiftTab.visibility == View.VISIBLE) {
+ binding.tvGiftTab.isSelected = false
+ binding.groupGift.visibility = View.GONE
+ }
val initInfo = DemoCache.readInitInfo()
val length = initInfo.giveDiamondOnceLimitNum.toInt().toString().length
- mEditGold.text.filters = arrayOf(LengthFilter(length))
- userInfo?.apply {
- tvId.text = "ID:${targetErbanNo}"
- tvNickname.text = targetNick
- ImageLoadUtils.loadAvatar(context, targetAvatar, ivAvatar)
-
- tvSure.setOnClickListener {
- val gold = mEditGold.text.toString().toInt()
- if (gold <= 0) {
- toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
- return@setOnClickListener
- }
- UserModel.get().cacheLoginUserInfo?.let {
- if (!it.isBindPaymentPwd) {
- val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
- tipDialog.setOkText(getString(R.string.to_setting))
- tipDialog.setOnActionListener(
- object : CommonTipDialog.OnActionListener {
- override fun onOk() {
- ModifyPwdActivity.start(
- this@GiveGoldToUserActivity,
- ModifyPwdActivity.PAY_PWD
- )
- }
- }
- )
- tipDialog.show()
- } else {
- val rateGold = initInfo.giveDiamondRate * 100
- val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTvDiamond(gold.toString())
- tipDialog.setTipMsg(getString(R.string.give_gold_to_user, targetNick))
- if (rateGold == 0.0) {
- tipDialog.setTipMessageGone(true)
- } else {
- tipDialog.setTvSeCharge("${rateGold.toInt()}%")
- val goldNew = gold + (gold * initInfo.giveDiamondRate)
- tipDialog.setTvConsumeDiamond(
- getString(
- R.string.consume_diamond_num,
- goldNew.toString()
- )
- )
- }
- tipDialog.setOnActionListener(
- object : GiveDiamondTipDialog.OnActionListener {
- override fun onOk() {
- GiveGoldPassWordFragment.newInstance(
- supportFragmentManager,
- gold.toString(),
- targetNick,
- ""
- )
- .apply {
- passWordFragment = this
- setListener(this@GiveGoldToUserActivity)
- }
- }
- }
- )
- tipDialog.show()
- }
- } ?: run {
- toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
- return@setOnClickListener
- }
- }
- }
- searchUserInfo?.apply {
- tvId.text = "ID:${erbanNo}"
- tvNickname.text = nick
- ImageLoadUtils.loadAvatar(context, avatar, ivAvatar)
-
- tvSure.setOnClickListener {
- val gold = mEditGold.text.toString().toInt()
- if (gold <= 0) {
- toast(ResUtil.getString(R.string.pay_activity_givegoldtouseractivity_06))
- return@setOnClickListener
- }
- UserModel.get().cacheLoginUserInfo?.let {
- if (!it.isBindPaymentPwd) {
- val tipDialog = CommonTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTipMsg(ResUtil.getString(R.string.setting_pay_pwd_first))
- tipDialog.setOkText(getString(R.string.to_setting))
- tipDialog.setOnActionListener(
- object : CommonTipDialog.OnActionListener {
- override fun onOk() {
- ModifyPwdActivity.start(
- this@GiveGoldToUserActivity,
- ModifyPwdActivity.PAY_PWD
- )
- }
- }
- )
- tipDialog.show()
- } else {
- val rateGold = initInfo.giveDiamondRate * 100
- val tipDialog = GiveDiamondTipDialog(this@GiveGoldToUserActivity)
- tipDialog.setTvDiamond(gold.toString())
- tipDialog.setTipMsg(getString(R.string.give_gold_to_user, nick))
- if (rateGold == 0.0) {
- tipDialog.setTipMessageGone(true)
- } else {
- tipDialog.setTvSeCharge("${rateGold.toInt()}%")
- val goldNew = gold + (gold * initInfo.giveDiamondRate)
- tipDialog.setTvConsumeDiamond(
- getString(
- R.string.consume_diamond_num,
- goldNew.toString()
- )
- )
- }
- tipDialog.setOnActionListener(
- object : GiveDiamondTipDialog.OnActionListener {
- override fun onOk() {
- GiveGoldPassWordFragment.newInstance(
- supportFragmentManager,
- gold.toString(),
- nick,
- ""
- )
- .apply {
- passWordFragment = this
- setListener(this@GiveGoldToUserActivity)
- }
- }
- }
- )
- tipDialog.show()
- }
- } ?: run {
- toast(ResUtil.getString(R.string.ui_setting_settingactivity_06))
- return@setOnClickListener
- }
- }
- }
- mTvDiamond.text = getString(
+ binding.mEditGold.text.filters = arrayOf(LengthFilter(length))
+ binding.mTvDiamond.text = getString(
R.string.my_diamond,
PayModel.get().currentWalletInfo?.diamondNum?.toString() ?: "0"
)
- mEditGold.addTextChangedListener(this)
+ binding.mEditGold.addTextChangedListener(this)
+ binding.tvDiamondTab.isSelected = true
+ binding.tvDiamondTab.setOnClickListener {
+ if (binding.tvGiftTab.visibility == View.VISIBLE) {
+ binding.tvGiftTab.isSelected = false
+ binding.groupGift.visibility = View.GONE
+ binding.tvDiamondTab.isSelected = true
+ binding.groupDiamond.visibility = View.VISIBLE
+ }
+ }
+ }
+
+ private fun initGift() {
+ val giftList = GiftModel.get().knapList
+ if (binding.tvDiamondTab.visibility == View.GONE) {
+ binding.tvGiftTab.isSelected = true
+ binding.tvSure.isEnabled = true
+ }
+// giftList.map { it.isSelected = false }
+ val list = transformList(giftList, 8)
+ binding.magicIndicatorEntrance.initIndicator(list.size)
+ binding.magicIndicatorEntrance.setSelectedPage(centerIndex)
+ binding.magicIndicatorEntrance.visibility =
+ if (list.size > 1) View.VISIBLE else View.INVISIBLE
+ binding.viewPagerEntrance.adapter = object : PagerAdapter() {
+ var cacheItemView = SparseArray()
+ override fun getCount(): Int {
+ return list.size
+ }
+
+ override fun isViewFromObject(view: View, `object`: Any): Boolean {
+ return view == `object`
+ }
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val recyclerView: RecyclerView
+ val giveGiftAdapter: GiveGiftAdapter
+ if (cacheItemView[position] == null) {
+ recyclerView = RecyclerView(context)
+ var lp = recyclerView.layoutParams
+ if (lp == null) {
+ lp = ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ }
+ recyclerView.layoutParams = lp
+ recyclerView.layoutManager = GridLayoutManager(context, 4)
+ recyclerView.addItemDecoration(
+ GridSpacingItemNewDecoration(
+ UIUtil.dip2px(
+ context,
+ 18.0
+ ), UIUtil.dip2px(context, 10.0), true
+ )
+ )
+ giveGiftAdapter = GiveGiftAdapter()
+ giveGiftAdapter.onItemClickListener = object : DoubleClickCheckListener() {
+ override fun onItemClickSingle(
+ adapter: BaseQuickAdapter<*, *>?,
+ view: View,
+ position: Int
+ ) {
+ val oldBean = giveGiftAdapter.getItem(selectGiftPos)
+ oldBean?.isSelected = false
+ giveGiftAdapter.notifyItemChanged(selectGiftPos)
+ val bean = giveGiftAdapter.getItem(position)
+ bean?.isSelected = true
+ giveGiftAdapter.notifyItemChanged(position)
+ selectGiftPos = position
+ giftAllCount = giveGiftAdapter.getItem(position)?.count ?: -1
+ giftId = giveGiftAdapter.getItem(position)?.giftId ?: -1
+ }
+ }
+ recyclerView.adapter = giveGiftAdapter
+ } else {
+ recyclerView = cacheItemView[position]
+ giveGiftAdapter = recyclerView.adapter as GiveGiftAdapter
+ }
+ giveGiftAdapter.setNewData(list[position])
+ container.addView(recyclerView)
+ return recyclerView
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
+ val recyclerView = cacheItemView[position]
+ container.removeView(recyclerView)
+ }
+ }
+ binding.viewPagerEntrance.setCurrentItem(centerIndex, false)
+ binding.editGift.addTextChangedListener(this)
+ binding.tvGiftTab.setOnClickListener {
+ if (binding.tvDiamondTab.visibility == View.VISIBLE) {
+ binding.tvDiamondTab.isSelected = false
+ binding.groupDiamond.visibility = View.GONE
+ binding.tvGiftTab.isSelected = true
+ binding.groupGift.visibility = View.VISIBLE
+ binding.tvSure.isEnabled = true
+ }
+ }
+ binding.tvAll.setOnClickListener {
+ if (giftAllCount != -1)
+ binding.editGift.setText(giftAllCount)
+ }
+ }
+
+ private fun transformList(
+ data: List,
+ pageSize: Int
+ ): List> {
+ val result: MutableList> = ArrayList()
+ if (data.isEmpty()) {
+ return result
+ }
+ for (i in data.toTypedArray().indices) {
+ var page: MutableList? = null
+ if (i % pageSize == 0) {
+ page = ArrayList()
+ result.add(page)
+ } else {
+ if (result.size > 0) {
+ page = result[result.size - 1]
+ }
+ }
+ page?.add(data[i])
+ }
+ return result
}
@SuppressLint("CheckResult")
@@ -223,23 +356,6 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
override fun onTextChanged(psw: String) {
val password = passWordFragment?.password?.password ?: ""
if (password.length == 6) {
- userInfo?.apply {
- dialogManager.showProgressDialog(context)
- PayModel.get()
- .giveGold(targetUid, mEditGold.text.toString(), DESAndBase64(password))
- .compose(bindToLifecycle())
- .doOnError {
- toast(it.message)
- passWordFragment?.password?.clearPassword()
- dialogManager.dismissDialog()
- }
- .subscribe { _ ->
- passWordFragment?.dismissAllowingStateLoss()
- dialogManager.dismissDialog()
- toast(getString(R.string.layout_activity_give_gold_success_01))
- finish()
- }
- }
searchUserInfo?.apply {
dialogManager.showProgressDialog(context)
PayModel.get().giveGold(uid, mEditGold.text.toString(), DESAndBase64(password))
@@ -266,13 +382,7 @@ class GiveGoldToUserActivity : BaseActivity(), GridPasswordView.OnPasswordChange
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
- if (s.isNullOrBlank()) {
- mEditGold.textSize = 15f
- tvSure.isEnabled = false
- } else {
- mEditGold.textSize = 35f
- tvSure.isEnabled = true
- }
+ binding.tvSure.isEnabled = !s.isNullOrBlank()
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt
new file mode 100644
index 000000000..42b212eab
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveDiamondDetailAdapter.kt
@@ -0,0 +1,23 @@
+package com.yizhuan.erban.pay.adapter
+
+import android.annotation.SuppressLint
+import android.widget.TextView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.TimeUtils
+
+
+class GiveDiamondDetailAdapter :
+ BaseQuickAdapter(R.layout.item_give_diamond_detail) {
+
+ @SuppressLint("SetTextI18n")
+ override fun convert(helper: BaseViewHolder, item: DiamondGiveHistoryInfo) {
+ helper.getView(R.id.tv_number).text = item.diamondNum.toString()
+ helper.getView(R.id.tv_pay_diamond).text =
+ mContext.getString(R.string.all_pay_diamond, item.realDiamondNum.toString())
+ helper.setText(R.id.tv_date, TimeUtils.getDateTimeString(item.createTime,"yyyy-MM-dd HH:mm:ss"))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java
new file mode 100644
index 000000000..e85909d6c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftAdapter.java
@@ -0,0 +1,34 @@
+package com.yizhuan.erban.pay.adapter;
+
+
+import android.widget.ImageView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.yizhuan.erban.R;
+import com.yizhuan.erban.ui.utils.ImageLoadUtils;
+import com.yizhuan.xchat_android_core.gift.bean.GiftInfo;
+
+/**
+ * 赠送礼物
+ */
+public class GiveGiftAdapter extends BaseQuickAdapter {
+
+
+ public GiveGiftAdapter() {
+ super(R.layout.item_give_gift);
+ }
+
+ @Override
+ protected void convert(BaseViewHolder helper, GiftInfo item) {
+ if (item == null) {
+ return;
+ }
+ helper.setText(R.id.tvName, item.getGiftName())
+ .setText(R.id.tvNum, "x" + item.getCount());
+ ImageView giftPic = helper.itemView.findViewById(R.id.ivGift);
+ ImageLoadUtils.loadImage(mContext, item.getGiftUrl(), giftPic);
+ helper.getView(R.id.viewBg).setSelected(item.isSelected);
+ }
+
+}
diff --git a/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt
new file mode 100644
index 000000000..17d36b5c4
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/adapter/GiveGiftDetailAdapter.kt
@@ -0,0 +1,24 @@
+package com.yizhuan.erban.pay.adapter
+
+import android.annotation.SuppressLint
+import android.widget.TextView
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.erban.ui.utils.ImageLoadUtils
+import com.yizhuan.erban.utils.TimeUiUtils
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.TimeUtils
+
+
+class GiveGiftDetailAdapter :
+ BaseQuickAdapter(R.layout.item_give_gift_detail) {
+
+ @SuppressLint("SetTextI18n")
+ override fun convert(helper: BaseViewHolder, item: DiamondGiveHistoryInfo) {
+ helper.getView(R.id.tv_gift_name).text = "${item.giftName}x${item.giftNum}"
+ ImageLoadUtils.loadAvatar(mContext, item.giftUrl, helper.getView(R.id.iv_avatar))
+ helper.setText(R.id.tv_date, TimeUtils.getDateTimeString(item.createTime,"yyyy-MM-dd HH:mm:ss"))
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt
new file mode 100644
index 000000000..7834f6a66
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveDiamondFragment.kt
@@ -0,0 +1,75 @@
+package com.yizhuan.erban.pay.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import androidx.fragment.app.viewModels
+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.FragmentGiveDiamondBinding
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.activity.GiveGoldDetailActivity
+import com.yizhuan.erban.pay.adapter.GiveDiamondDetailAdapter
+import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+class GiveDiamondFragment : BaseViewBindingFragment() {
+
+ private var pageNum: Int = 1
+ private val pageSize = 20
+ private lateinit var mAdapter: GiveDiamondDetailAdapter
+ private lateinit var rvDelegate: RVDelegate
+
+ private val giveGoldModel: GiveGoldModel by viewModels()
+
+ private var uid: Long = 0L
+
+ companion object {
+ fun newInstance(uid: Long): GiveDiamondFragment {
+ val args = Bundle()
+ args.putLong("uid", uid)
+ val fragment = GiveDiamondFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun init() {
+ uid = arguments?.getLong("uid") ?: 0L
+ mAdapter = GiveDiamondDetailAdapter()
+ rvDelegate = RVDelegate.Builder()
+ .setAdapter(mAdapter)
+ .setLayoutManager(LinearLayoutManager(context))
+ .setPageSize(20)
+ .setEmptyView(
+ EmptyViewHelper.createEmptyView(
+ context,
+ ResUtil.getString(R.string.me_give_gold_empty)
+ )
+ )
+ .setRefreshLayout(binding.refreshLayout)
+ .setRecyclerView(binding.recyclerView)
+ .build()
+ mAdapter.setOnLoadMoreListener({
+ loadData(false)
+ }, binding.recyclerView)
+ binding.refreshLayout.setOnRefreshListener {
+ loadData(true)
+ }
+ giveGoldModel.giveDetailLiveData.observe(this) {
+ rvDelegate.loadData(it)
+ }
+ loadData(true)
+ }
+
+ @SuppressLint("CheckResult")
+ fun loadData(isRefresh: Boolean) {
+ binding.refreshLayout.isRefreshing = isRefresh
+ pageNum = if (isRefresh) 1 else (pageNum + 1)
+ giveGoldModel.giveDetailInfo(uid, 0, pageNum, pageSize)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt
new file mode 100644
index 000000000..101df8fcf
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/pay/fragment/GiveGiftFragment.kt
@@ -0,0 +1,76 @@
+package com.yizhuan.erban.pay.fragment
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import androidx.fragment.app.viewModels
+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.FragmentGiveDiamondBinding
+import com.yizhuan.erban.databinding.FragmentGiveGiftBinding
+import com.yizhuan.erban.pay.GiveGoldModel
+import com.yizhuan.erban.pay.activity.GiveGoldDetailActivity
+import com.yizhuan.erban.pay.adapter.GiveGiftDetailAdapter
+import com.yizhuan.erban.pay.adapter.LatelyGiveAdapter
+import com.yizhuan.erban.ui.utils.RVDelegate
+import com.yizhuan.xchat_android_core.user.bean.DiamondGiveHistoryInfo
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+class GiveGiftFragment : BaseViewBindingFragment() {
+
+ private var pageNum: Int = 1
+ private val pageSize = 20
+ private lateinit var mAdapter: GiveGiftDetailAdapter
+ private lateinit var rvDelegate: RVDelegate
+
+ private val giveGoldModel: GiveGoldModel by viewModels()
+
+ private var uid: Long = 0L
+
+ companion object {
+ fun newInstance(uid: Long): GiveGiftFragment {
+ val args = Bundle()
+ args.putLong("uid", uid)
+ val fragment = GiveGiftFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+
+ override fun init() {
+ uid = arguments?.getLong("uid") ?: 0L
+ mAdapter = GiveGiftDetailAdapter()
+ rvDelegate = RVDelegate.Builder()
+ .setAdapter(mAdapter)
+ .setLayoutManager(LinearLayoutManager(context))
+ .setPageSize(20)
+ .setEmptyView(
+ EmptyViewHelper.createEmptyView(
+ context,
+ ResUtil.getString(R.string.me_give_gold_empty)
+ )
+ )
+ .setRefreshLayout(binding.refreshLayout)
+ .setRecyclerView(binding.recyclerView)
+ .build()
+ mAdapter.setOnLoadMoreListener({
+ loadData(false)
+ }, binding.recyclerView)
+ binding.refreshLayout.setOnRefreshListener {
+ loadData(true)
+ }
+ giveGoldModel.giveDetailLiveData.observe(this) {
+ rvDelegate.loadData(it)
+ }
+ loadData(true)
+ }
+
+ @SuppressLint("CheckResult")
+ fun loadData(isRefresh: Boolean) {
+ binding.refreshLayout.isRefreshing = isRefresh
+ pageNum = if (isRefresh) 1 else (pageNum + 1)
+ giveGoldModel.giveDetailInfo(uid, 1, pageNum, pageSize)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
index 1448b2e16..ac052fa47 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/user/UserInfoGiftFragment.java
@@ -16,8 +16,6 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingFragment;
import com.yizhuan.erban.databinding.FragmentUserInfoGiftBinding;
import com.yizhuan.erban.ui.user.adapter.UserGiftAdapter;
-import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
-import com.yizhuan.erban.ui.widget.recyclerview.decoration.GridSpacingItemNewDecoration;
import com.yizhuan.xchat_android_core.bean.UserInfoItem;
import com.yizhuan.xchat_android_core.user.UserInfoUiMgr;
import com.yizhuan.xchat_android_core.user.UserModel;
diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java b/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java
new file mode 100644
index 000000000..cec2f1add
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/widget/viewpager/NoScrollViewPager.java
@@ -0,0 +1,46 @@
+package com.yizhuan.erban.ui.widget.viewpager;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.viewpager.widget.ViewPager;
+
+public class NoScrollViewPager extends ViewPager {
+ // false 禁止ViewPager左右滑动。
+ // true 普通ViewPager
+ private boolean isScroll = false;
+
+ public NoScrollViewPager(@NonNull Context context) {
+ this(context, null);
+ }
+ public NoScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+ public void setScrollable(boolean isScroll) {
+ this.isScroll = isScroll;
+ }
+ @Override
+ public boolean onInterceptTouchEvent(MotionEvent ev) {
+ if (!isScroll){
+ // 不允许拦截事件就返回false
+ return isScroll;
+ }else {
+ // 正常ViewPager处理拦截事件就请求父类普通ViewPager中的onInterceptTouchEvent()
+ return super.onInterceptTouchEvent(ev);
+ }
+ }
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (!isScroll){
+ // 不允许消费事件就返回false.
+ return isScroll;
+ }else {
+ // 正常ViewPager消耗事件就请求父类普通ViewPager中的onTouchEvent.
+ return super.onTouchEvent(ev);
+ }
+ }
+}
+
diff --git a/app/src/main/res/color/color_donation_btn.xml b/app/src/main/res/color/color_donation_btn.xml
new file mode 100644
index 000000000..178adef94
--- /dev/null
+++ b/app/src/main/res/color/color_donation_btn.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xhdpi/donation_arrow_right.webp b/app/src/main/res/drawable-xhdpi/donation_arrow_right.webp
new file mode 100644
index 000000000..ca7a8a5ba
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/donation_arrow_right.webp differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_give_diamond_detail.webp b/app/src/main/res/drawable-xhdpi/ic_give_diamond_detail.webp
new file mode 100644
index 000000000..1805a5b4d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_give_diamond_detail.webp differ
diff --git a/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp b/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp
index 53d67e83d..b09b928bd 100644
Binary files a/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp and b/app/src/main/res/drawable-xhdpi/me_clean_diamond.webp differ
diff --git a/app/src/main/res/drawable/bg_common_disable_select.xml b/app/src/main/res/drawable/bg_common_disable_select.xml
new file mode 100644
index 000000000..31ef8ba6e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_common_disable_select.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_common_select.xml b/app/src/main/res/drawable/bg_common_select.xml
new file mode 100644
index 000000000..1bbd455f7
--- /dev/null
+++ b/app/src/main/res/drawable/bg_common_select.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_common_select_normal.xml b/app/src/main/res/drawable/bg_common_select_normal.xml
new file mode 100644
index 000000000..f61e22366
--- /dev/null
+++ b/app/src/main/res/drawable/bg_common_select_normal.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_f3f5fa_r4.xml b/app/src/main/res/drawable/bg_f3f5fa_r4.xml
new file mode 100644
index 000000000..611da8e08
--- /dev/null
+++ b/app/src/main/res/drawable/bg_f3f5fa_r4.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_give_gift_bg_selector.xml b/app/src/main/res/drawable/bg_give_gift_bg_selector.xml
new file mode 100644
index 000000000..e3ad5977e
--- /dev/null
+++ b/app/src/main/res/drawable/bg_give_gift_bg_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml b/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml
new file mode 100644
index 000000000..92b1a4ba6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_gradient_cc66ff_9cb3ff_13e2f5_r8.xml
@@ -0,0 +1,32 @@
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_give_gold_to_user.xml b/app/src/main/res/layout/activity_give_gold_to_user.xml
index 8f82d422e..01d6d7d42 100644
--- a/app/src/main/res/layout/activity_give_gold_to_user.xml
+++ b/app/src/main/res/layout/activity_give_gold_to_user.xml
@@ -18,9 +18,9 @@
android:id="@+id/ivAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
+ android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:src="@drawable/default_avatar"
- android:layout_marginStart="@dimen/dp_15"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_bar" />
@@ -28,76 +28,104 @@
android:id="@+id/tvNickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_8"
- tools:text="@string/layout_activity_give_gold_to_user_01"
android:textColor="#ff333333"
android:textSize="16sp"
- android:layout_marginStart="@dimen/dp_10"
app:layout_constraintStart_toEndOf="@+id/ivAvatar"
- app:layout_constraintTop_toTopOf="@+id/ivAvatar"/>
+ app:layout_constraintTop_toTopOf="@+id/ivAvatar"
+ tools:text="@string/layout_activity_give_gold_to_user_01" />
+ tools:text="ID:123456" />
-
+ app:layout_constraintTop_toBottomOf="@+id/ivAvatar">
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/llTab" />
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/mIvDiamond" />
+
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/mEditGold" />
@@ -119,25 +147,123 @@
android:textSize="13sp" />
+ android:layout_height="wrap_content"
+ android:src="@drawable/icon_diamond" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tvAll" />
diff --git a/app/src/main/res/layout/fragment_give_diamond.xml b/app/src/main/res/layout/fragment_give_diamond.xml
new file mode 100644
index 000000000..a3d92b162
--- /dev/null
+++ b/app/src/main/res/layout/fragment_give_diamond.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_give_gift.xml b/app/src/main/res/layout/fragment_give_gift.xml
new file mode 100644
index 000000000..a3d92b162
--- /dev/null
+++ b/app/src/main/res/layout/fragment_give_gift.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml
index d3ea02a25..53367e288 100644
--- a/app/src/main/res/layout/fragment_me.xml
+++ b/app/src/main/res/layout/fragment_me.xml
@@ -651,7 +651,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
- android:text="@string/me_clean_diamond"
+ android:text="@string/me_donation"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_14" />
diff --git a/app/src/main/res/layout/item_give_diamond_detail.xml b/app/src/main/res/layout/item_give_diamond_detail.xml
new file mode 100644
index 000000000..b16e25710
--- /dev/null
+++ b/app/src/main/res/layout/item_give_diamond_detail.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_give_gift.xml b/app/src/main/res/layout/item_give_gift.xml
new file mode 100644
index 000000000..1196be618
--- /dev/null
+++ b/app/src/main/res/layout/item_give_gift.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_give_gift_detail.xml b/app/src/main/res/layout/item_give_gift_detail.xml
new file mode 100644
index 000000000..1d67326b0
--- /dev/null
+++ b/app/src/main/res/layout/item_give_gift_detail.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_lately_give.xml b/app/src/main/res/layout/item_lately_give.xml
index 0e2e6d9d2..fec02e9ca 100644
--- a/app/src/main/res/layout/item_lately_give.xml
+++ b/app/src/main/res/layout/item_lately_give.xml
@@ -42,4 +42,13 @@
app:layout_constraintTop_toBottomOf="@id/tv_nickname"
tools:text="ID:123456" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index d925164e7..b304b3929 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -626,5 +626,6 @@
#4cFFFFFF
#67D7D7
#92F9E8
+ #E6E6F0
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dca802ac5..30047ddd9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -167,6 +167,7 @@
你還沒有關註任何Peko好友哦! \n快去添加關註吧!
搜索昵稱或ID
+ 搜索用戶ID
在線中…
客服
@@ -967,7 +968,10 @@
我的房間
收益記錄
轉贈鉆石
+ 轉贈禮物
我的轉贈
+ 轉贈至
+ 轉贈明細
請聯系客服處理
@@ -4927,5 +4931,13 @@
%s鉆
向%s轉贈
已複製
+ 轉贈記錄
+ 數量
+ 全部
+ 請先選擇禮物
+ 請輸入禮物數量
+ 禮物數量有誤,請重新輸入
+ 轉贈成功
+ 總支出%s鉆
\ No newline at end of file
diff --git a/app/src/module_community/res/layout/activity_give_gold.xml b/app/src/module_community/res/layout/activity_give_gold.xml
index 1da847824..8e22ac916 100644
--- a/app/src/module_community/res/layout/activity_give_gold.xml
+++ b/app/src/module_community/res/layout/activity_give_gold.xml
@@ -36,7 +36,7 @@
android:gravity="center_vertical"
android:imeOptions="actionSearch"
android:singleLine="true"
- android:hint="@string/search_hint"
+ android:hint="@string/search_user_id"
android:paddingStart="@dimen/dp_15"
android:paddingEnd="@dimen/dp_15"
android:textColor="@color/color_1F1A4E"
@@ -67,7 +67,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_25"
- android:text="@string/layout_activity_give_gold_01"
+ android:text="@string/donation_record"
android:textColor="@color/color_1F1A4E"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
@@ -95,6 +95,8 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
index ea8f67b60..6f6c9b969 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/home/model/HomeModel.kt
@@ -113,6 +113,21 @@ object HomeModel : BaseModel() {
api.getSearchUser(erbanNo)
}
+ suspend fun giveGift(toUid: Long, giftId: Int, giftNum: Int): String? =
+ launchRequest {
+ api.giveGift(toUid, giftId, giftNum)
+ }
+
+ suspend fun getGiveDetail(
+ uid: Long,
+ type: Int,
+ page: Int,
+ pageSize: Int
+ ): List? =
+ launchRequest {
+ api.getGiveDetail(uid, type, page, pageSize)
+ }
+
suspend fun getHotRoom(): List? =
launchRequest {
api.getHotRoom()
@@ -427,6 +442,31 @@ object HomeModel : BaseModel() {
@Query("erbanNo") erbanNo: Long?
): ServiceResult
+ /**
+ * 贈送禮物
+ *
+ * @return
+ */
+ @POST("/user/diamond/giveGift")
+ suspend fun giveGift(
+ @Query("toUid") toUid: Long?,
+ @Query("giftId") giftId: Int?,
+ @Query("giftNum") giftNum: Int?
+ ): ServiceResult
+
+ /**
+ * 轉贈詳情
+ *
+ * @return
+ */
+ @GET("/user/diamond/giveRecordVoByType")
+ suspend fun getGiveDetail(
+ @Query("toUid") toUid: Long?,
+ @Query("type") type: Int?,
+ @Query("pageNum") pageNum: Int?,
+ @Query("pageSize") pageSize: Int?
+ ): ServiceResult>
+
}
}
\ No newline at end of file
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
index 9dcefe974..57002cf17 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/gift/bean/GiftInfo.java
@@ -46,6 +46,8 @@ public class GiftInfo implements Serializable {
@SerializedName("nobleName")
private String nobleName;
+ public boolean isSelected;
+
/**
* 是否全服通知
*/
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
index 4b2e951f0..abdfcce2d 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/initial/bean/InitInfo.java
@@ -27,6 +27,7 @@ public class InitInfo implements Serializable {
private NobleResourceComponent nobleResource;
private List monsters;
+ /** 转赠钻石白名单 */
private List giveDiamondErbanNoList;
/** 每日转赠钻石总额限制 */
private Long giveDiamondDailyNum;
@@ -34,6 +35,12 @@ public class InitInfo implements Serializable {
private Long giveDiamondOnceLimitNum;
/** 转赠手续费率 */
private Double giveDiamondRate;
+ /** 转赠钻石财富等级 */
+ private Integer giveDiamondExperLevel;
+ /** 转赠礼物白名单 */
+ private List giveGiftErbanNoList;
+ /** 转赠礼物财富等级 */
+ private Integer giveGiftExperLevel;
private double exchangeGoldRate;// 钻石兑换钻石比率
private double exchangeRate;// 钻石兑换钻石比率
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
index 89713259c..e55d3bb67 100644
--- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/DiamondGiveHistoryInfo.java
@@ -16,7 +16,15 @@ public class DiamondGiveHistoryInfo implements Serializable {
private Long diamondNum;//转赠给对方的数量
private Double realDiamondNum;//转赠实际支出的数量,包含手续费
- private String createTime;//创建时间
- private String updateTime;//更新时间
+ private Long createTime;//创建时间
+ private Long updateTime;//更新时间
+
+ private int type;//转赠类型: 0转赠钻石 1转赠礼物
+ private Integer giftId;//转赠礼物id
+ private Integer giftNum;//转赠礼物数
+ private String giftUrl;//轉贈禮物url
+ private String giftName;//轉贈禮物名字
+ private Long giftGoldNum;//转赠礼物单价
+ private Long totalGiftGoldNum;//转赠礼物总价值
}
diff --git a/nim_uikit/res/values/colors.xml b/nim_uikit/res/values/colors.xml
index 8035150c8..92a781bcb 100644
--- a/nim_uikit/res/values/colors.xml
+++ b/nim_uikit/res/values/colors.xml
@@ -70,6 +70,7 @@
#248DFA
#FAFAFA
#B3B3B3
+ #B3B3C3
#FFBC52
#BAB0FF
#2A2A39