根据产品要求签到sub item不可以点击
This commit is contained in:
parent
9ab738e07c
commit
3bcd4383e0
|
|
@ -73,10 +73,7 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
mRewardDetailList?.let {
|
||||
mSignItemViewList.forEachIndexed { index, itemView->
|
||||
itemView.setData(mRewardDetailList!![index],
|
||||
TaskManager.instance().getDailySignStateBean(index),
|
||||
{ isSelected ->
|
||||
handleItemSelectStateChanged(index, isSelected)
|
||||
})
|
||||
TaskManager.instance().getDailySignStateBean(index))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -86,46 +83,39 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
||||
mSelectedDayIndex = mCurDayIndex
|
||||
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
||||
|
||||
updateBottomButtons(mSelectedDayIndex)
|
||||
updateUI()
|
||||
}
|
||||
|
||||
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {
|
||||
mSelectedDayIndex = itemIndex
|
||||
mSignItemViewList.forEachIndexed { index, itemView ->
|
||||
if (itemIndex != index) {
|
||||
itemView.setSelectState(false)
|
||||
}
|
||||
}
|
||||
updateBottomButtons(mSelectedDayIndex)
|
||||
}
|
||||
|
||||
private fun updateBottomButtons(selectedIndex: Int) {
|
||||
val itemView = mSignItemViewList.get(selectedIndex)
|
||||
val stateBean = itemView.getStateBean()
|
||||
when (stateBean.signState) {
|
||||
DailySignBean.SIGN_STATE_ENABLE -> {
|
||||
|
||||
private fun updateUI() {
|
||||
val curDayView = mSignItemViewList[mCurDayIndex]
|
||||
val curDayStateBean = curDayView.getStateBean()
|
||||
|
||||
if (!curDayStateBean.hasSigned) {
|
||||
mBinding.actionNormalTwoButs.isVisible = true
|
||||
mBinding.actionComplement.isVisible = false
|
||||
mBinding.actionWatchAd.isVisible = false
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_DISABLE -> {
|
||||
mBinding.actionNormalTwoButs.isVisible = false
|
||||
mBinding.actionComplement.isVisible = false
|
||||
mBinding.actionWatchAd.isVisible = false
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_DONE -> {
|
||||
mBinding.actionTomorrowSign.isVisible = false
|
||||
} else {
|
||||
if (!curDayStateBean.hasWatchedAd) {
|
||||
mBinding.actionNormalTwoButs.isVisible = false
|
||||
mBinding.actionComplement.isVisible = false
|
||||
mBinding.actionWatchAd.isVisible = true
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_FORGOT -> {
|
||||
mBinding.actionComplement.isVisible = false
|
||||
mBinding.actionTomorrowSign.isVisible = false
|
||||
} else {
|
||||
val forgotSignDays = TaskManager.instance().getForgotSignDays()
|
||||
if (forgotSignDays > 0) {
|
||||
mBinding.actionNormalTwoButs.isVisible = false
|
||||
mBinding.actionComplement.isVisible = true
|
||||
mBinding.actionWatchAd.isVisible = false
|
||||
mBinding.actionComplement.isVisible = true
|
||||
mBinding.actionTomorrowSign.isVisible = false
|
||||
} else {
|
||||
mBinding.actionNormalTwoButs.isVisible = false
|
||||
mBinding.actionWatchAd.isVisible = false
|
||||
mBinding.actionComplement.isVisible = false
|
||||
mBinding.actionTomorrowSign.isVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,10 +168,10 @@ class TaskManager private constructor() {
|
|||
|
||||
fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean {
|
||||
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||
if ((dayIndex == mCurDayIndexDailySign && daySignState.signState == DailySignBean.SIGN_STATE_ENABLE)
|
||||
|| (daySignState.isComplementEnable)) {
|
||||
daySignState.signState = DailySignBean.SIGN_STATE_DONE
|
||||
daySignState.rewardNum += rewardNum
|
||||
|
||||
if (!daySignState.hasSigned) {
|
||||
daySignState.hasSigned = true
|
||||
daySignState.hasRewardedNum += rewardNum
|
||||
saveDailySignInfo()
|
||||
return true
|
||||
}
|
||||
|
|
@ -184,20 +184,30 @@ class TaskManager private constructor() {
|
|||
|
||||
private fun generateTestDailySignTestBean() {
|
||||
mDailySignData = DailySignBean().apply {
|
||||
startMs = DateUtil.getCurTimeMs() - 3 * DateUtil.MS_NUM_ONE_DAY
|
||||
startMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
|
||||
signStateList.clear()
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DONE, finishExtraAd = true, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_ENABLE, finishExtraAd = false, isComplementEnable = true))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_ENABLE, finishExtraAd = false, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(signState = DailySignBean.SIGN_STATE_DISABLE, finishExtraAd = false, isComplementEnable = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
}
|
||||
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
}
|
||||
|
||||
fun getForgotSignDays(): Int {
|
||||
var forgotSignDays = 0
|
||||
mDailySignData.signStateList.forEach { item->
|
||||
if (!item.hasSigned) {
|
||||
forgotSignDays++
|
||||
}
|
||||
}
|
||||
return forgotSignDays
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.gamedog.vididin.manager
|
||||
|
||||
import com.gamedog.vididin.manager.DailySignBean.Companion.SIGN_STATE_DISABLE
|
||||
import java.io.Serializable
|
||||
|
||||
|
||||
|
|
@ -19,7 +18,7 @@ data class DailySignBean(
|
|||
}
|
||||
|
||||
init {
|
||||
signStateList.add(DailySignDayInfoBean(signState = SIGN_STATE_ENABLE))
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
|
|
@ -31,10 +30,9 @@ data class DailySignBean(
|
|||
|
||||
|
||||
data class DailySignDayInfoBean(
|
||||
var signState: Int = SIGN_STATE_DISABLE,
|
||||
var rewardNum: Int = 0,
|
||||
var finishExtraAd: Boolean = false,
|
||||
var isComplementEnable: Boolean = false, // 补签
|
||||
var hasSigned: Boolean = false,
|
||||
var hasWatchedAd: Boolean = false,
|
||||
var hasRewardedNum: Int = 0,
|
||||
): Serializable
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import android.view.LayoutInflater
|
|||
import android.widget.LinearLayout
|
||||
import androidx.core.view.isVisible
|
||||
import com.ama.core.architecture.util.ResUtil
|
||||
import com.ama.core.architecture.util.setOnClickBatch
|
||||
import com.gamedog.vididin.R
|
||||
import com.gamedog.vididin.databinding.DailySignItemBinding
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
|
|
@ -25,52 +24,25 @@ class DailySignItemView @JvmOverloads constructor(
|
|||
private lateinit var mStateData: DailySignDayInfoBean
|
||||
private var mBinding: DailySignItemBinding
|
||||
private var mIsSelected = false
|
||||
private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null
|
||||
|
||||
|
||||
init {
|
||||
mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true)
|
||||
mBinding.run {
|
||||
setOnClickBatch(contentRoot, ) {
|
||||
when(this) {
|
||||
contentRoot -> {
|
||||
if (!mIsSelected) {
|
||||
setSelectState(true)
|
||||
mSelectStateCallback?.invoke(mIsSelected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun setData(data: RewardDetail, stateData: DailySignDayInfoBean, selectStateCallback: (isSelected: Boolean)->Unit) {
|
||||
fun setData(data: RewardDetail, stateData: DailySignDayInfoBean) {
|
||||
mConfigData = data
|
||||
mStateData = stateData
|
||||
mSelectStateCallback = selectStateCallback
|
||||
mBinding.tvGoldNum.text = "" + mConfigData.value
|
||||
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mConfigData.day
|
||||
|
||||
when(mStateData.signState) {
|
||||
DailySignBean.SIGN_STATE_ENABLE -> {
|
||||
mBinding.ivDone.isVisible = false
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_DISABLE -> {
|
||||
mBinding.ivDone.isVisible = false
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_DONE -> {
|
||||
mBinding.ivDone.isVisible = true
|
||||
mBinding.tvDayNum.isVisible = false
|
||||
}
|
||||
|
||||
DailySignBean.SIGN_STATE_FORGOT -> {
|
||||
mBinding.ivDone.isVisible = false
|
||||
}
|
||||
}
|
||||
mBinding.ivDone.isVisible = mStateData.hasSigned
|
||||
mBinding.tvDayNum.isVisible = !mStateData.hasSigned
|
||||
}
|
||||
|
||||
fun setLargeWidthMode() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ff938a84" />
|
||||
<corners android:topLeftRadius="42dp" android:topRightRadius="42dp" android:bottomLeftRadius="42dp" android:bottomRightRadius="42dp" />
|
||||
</shape>
|
||||
|
|
@ -287,6 +287,26 @@
|
|||
/>
|
||||
</FrameLayout>
|
||||
|
||||
<!--明日再来-->
|
||||
<FrameLayout
|
||||
android:id="@+id/action_tomorrow_sign"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="50dp"
|
||||
android:layout_gravity="center"
|
||||
android:paddingHorizontal="30dp"
|
||||
android:background="@drawable/bg_sign_done_but"
|
||||
android:visibility="gone">
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="18sp"
|
||||
android:textColor="@color/white"
|
||||
android:text="@string/tomorrow_sign"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center"
|
||||
/>
|
||||
</FrameLayout>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@
|
|||
<string name="title_cash_record">Dinheiro</string>
|
||||
<string name="sign_success_desc">Você ganhou uma recompensa!</string>
|
||||
<string name="complement_hint">Recuperar 1 dia de login</string>
|
||||
<string name="tomorrow_sign">Volte amanhã para fazer login</string>
|
||||
|
||||
|
||||
</resources>
|
||||
Loading…
Reference in New Issue