状态变化跟随
This commit is contained in:
parent
4843f71574
commit
100b5f7d61
|
|
@ -1,9 +1,11 @@
|
||||||
package com.gamedog.vididin.main.fragments.task
|
package com.gamedog.vididin.main.fragments.task
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import com.ama.core.architecture.util.setOnClickBatch
|
import com.ama.core.architecture.util.setOnClickBatch
|
||||||
import com.ama.core.architecture.widget.BindingDialog
|
import com.ama.core.architecture.widget.BindingDialog
|
||||||
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
||||||
|
import com.gamedog.vididin.manager.DailySignBean
|
||||||
import com.gamedog.vididin.manager.TaskManager
|
import com.gamedog.vididin.manager.TaskManager
|
||||||
import com.gamedog.vididin.widget.DailySignItemView
|
import com.gamedog.vididin.widget.DailySignItemView
|
||||||
|
|
||||||
|
|
@ -13,7 +15,6 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
private var mSelectedDayIndex: Int = 0
|
private var mSelectedDayIndex: Int = 0
|
||||||
private var mRewardDetailList: List<RewardDetail>? = emptyList()
|
private var mRewardDetailList: List<RewardDetail>? = emptyList()
|
||||||
private var mSignItemViewList: MutableList<DailySignItemView> = mutableListOf()
|
private var mSignItemViewList: MutableList<DailySignItemView> = mutableListOf()
|
||||||
private var mSignStateList: MutableList<DailySignItemView> = mutableListOf()
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -71,9 +72,11 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
|
|
||||||
mRewardDetailList?.let {
|
mRewardDetailList?.let {
|
||||||
mSignItemViewList.forEachIndexed { index, itemView->
|
mSignItemViewList.forEachIndexed { index, itemView->
|
||||||
itemView.setData(mRewardDetailList!![index], { isSelected ->
|
itemView.setData(mRewardDetailList!![index],
|
||||||
handleItemSelectStateChanged(index, isSelected)
|
TaskManager.instance().getDailySignStateBean(index),
|
||||||
})
|
{ isSelected ->
|
||||||
|
handleItemSelectStateChanged(index, isSelected)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -83,6 +86,8 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
||||||
mSelectedDayIndex = mCurDayIndex
|
mSelectedDayIndex = mCurDayIndex
|
||||||
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
||||||
|
|
||||||
|
updateBottomButtons(mSelectedDayIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {
|
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {
|
||||||
|
|
@ -92,6 +97,37 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
itemView.setSelectState(false)
|
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 -> {
|
||||||
|
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.actionNormalTwoButs.isVisible = false
|
||||||
|
mBinding.actionComplement.isVisible = false
|
||||||
|
mBinding.actionWatchAd.isVisible = true
|
||||||
|
}
|
||||||
|
|
||||||
|
DailySignBean.SIGN_STATE_FORGOT -> {
|
||||||
|
mBinding.actionNormalTwoButs.isVisible = false
|
||||||
|
mBinding.actionComplement.isVisible = true
|
||||||
|
mBinding.actionWatchAd.isVisible = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,10 @@ class TaskManager private constructor() {
|
||||||
return dayIndexOfPeriod
|
return dayIndexOfPeriod
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean {
|
||||||
|
return mDailySignData.signStateList[dayIndex]
|
||||||
|
}
|
||||||
|
|
||||||
fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean {
|
fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean {
|
||||||
val daySignState = mDailySignData.signStateList[dayIndex]
|
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||||
if ((dayIndex == mCurDayIndexDailySign && daySignState.signState == DailySignBean.SIGN_STATE_ENABLE)
|
if ((dayIndex == mCurDayIndexDailySign && daySignState.signState == DailySignBean.SIGN_STATE_ENABLE)
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,14 @@ import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import com.ama.core.architecture.util.ResUtil
|
import com.ama.core.architecture.util.ResUtil
|
||||||
import com.ama.core.architecture.util.setOnClickBatch
|
import com.ama.core.architecture.util.setOnClickBatch
|
||||||
import com.gamedog.vididin.R
|
import com.gamedog.vididin.R
|
||||||
import com.gamedog.vididin.databinding.DailySignItemBinding
|
import com.gamedog.vididin.databinding.DailySignItemBinding
|
||||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||||
|
import com.gamedog.vididin.manager.DailySignBean
|
||||||
|
import com.gamedog.vididin.manager.DailySignDayInfoBean
|
||||||
import kotlin.run
|
import kotlin.run
|
||||||
|
|
||||||
class DailySignItemView @JvmOverloads constructor(
|
class DailySignItemView @JvmOverloads constructor(
|
||||||
|
|
@ -18,7 +21,8 @@ class DailySignItemView @JvmOverloads constructor(
|
||||||
defStyleAttr: Int = 0
|
defStyleAttr: Int = 0
|
||||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
private lateinit var mData: RewardDetail
|
private lateinit var mConfigData: RewardDetail
|
||||||
|
private lateinit var mStateData: DailySignDayInfoBean
|
||||||
private var mBinding: DailySignItemBinding
|
private var mBinding: DailySignItemBinding
|
||||||
private var mIsSelected = false
|
private var mIsSelected = false
|
||||||
private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null
|
private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null
|
||||||
|
|
@ -42,11 +46,31 @@ class DailySignItemView @JvmOverloads constructor(
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fun setData(data: RewardDetail, selectStateCallback: (isSelected: Boolean)->Unit) {
|
fun setData(data: RewardDetail, stateData: DailySignDayInfoBean, selectStateCallback: (isSelected: Boolean)->Unit) {
|
||||||
mData = data
|
mConfigData = data
|
||||||
|
mStateData = stateData
|
||||||
mSelectStateCallback = selectStateCallback
|
mSelectStateCallback = selectStateCallback
|
||||||
mBinding.tvGoldNum.text = "" + mData.value
|
mBinding.tvGoldNum.text = "" + mConfigData.value
|
||||||
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mData.day
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setLargeWidthMode() {
|
fun setLargeWidthMode() {
|
||||||
|
|
@ -63,6 +87,9 @@ class DailySignItemView @JvmOverloads constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getStateBean(): DailySignDayInfoBean {
|
||||||
|
return mStateData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,14 +48,31 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/tv_day_num"
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="1dp"
|
android:layout_marginTop="1dp">
|
||||||
android:textSize="12sp"
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:textColor="@color/gray3"
|
android:id="@+id/tv_day_num"
|
||||||
android:text="Dia"
|
android:layout_width="wrap_content"
|
||||||
/>
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textColor="@color/gray3"
|
||||||
|
android:text="Dia"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_done"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="0dp"
|
||||||
|
android:tint="@color/green_39"
|
||||||
|
android:src="@mipmap/icon_check_mark"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
/>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
@ -27,11 +27,11 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:gravity="center"
|
android:gravity="center_horizontal"
|
||||||
android:layout_marginHorizontal="30dp"
|
android:layout_marginHorizontal="30dp"
|
||||||
android:clipChildren="false"
|
android:clipChildren="false"
|
||||||
|
android:layout_marginTop="45dp"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
>
|
>
|
||||||
|
|
@ -143,76 +143,151 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="20dp"
|
||||||
android:clipChildren="false"
|
android:clipChildren="false" >
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<!--普通签到两个按钮场景-->
|
||||||
android:id="@+id/but_sign"
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:id="@+id/action_normal_two_buts"
|
||||||
android:layout_height="42dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/bg_sign_left_but"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textColor="@color/red_2f"
|
|
||||||
android:text="@string/resgatar"
|
|
||||||
android:gravity="center"
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/but_watch_ad"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="10dp"
|
android:clipChildren="false"
|
||||||
android:layout_weight="1">
|
android:orientation="horizontal"
|
||||||
|
android:gravity="center"
|
||||||
|
>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/but_sign"
|
||||||
android:layout_height="45dp"
|
android:layout_width="0dp"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_height="42dp"
|
||||||
android:background="@mipmap/zero_bg_but"/>
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/bg_sign_left_but"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textColor="@color/red_2f"
|
||||||
|
android:text="@string/resgatar"
|
||||||
|
android:gravity="center"
|
||||||
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
<FrameLayout
|
||||||
|
android:id="@+id/but_watch_ad"
|
||||||
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:layout_marginStart="10dp"
|
||||||
android:layout_marginBottom="2dp"
|
android:layout_weight="1">
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:layout_gravity="center">
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="45dp"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:background="@mipmap/zero_bg_but"/>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:layout_gravity="center">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:src="@mipmap/task_video"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:text="@string/assistir"
|
||||||
|
android:gravity="center"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_marginLeft="8dp"
|
||||||
android:src="@mipmap/task_video"/>
|
android:layout_gravity="top|right"
|
||||||
|
android:layout_marginTop="-20dp"
|
||||||
|
android:layout_marginRight="3dp"
|
||||||
|
android:src="@mipmap/icon_x2"/>
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!--已完成普通签到 待看广告)-->
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/action_watch_ad"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:paddingHorizontal="30dp"
|
||||||
|
android:visibility="visible"
|
||||||
|
android:background="@mipmap/icon_action_but_bg">
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center_vertical" >
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:textSize="18sp"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:text="@string/assistir"
|
||||||
|
android:drawableLeft="@mipmap/task_video"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
/>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center_horizontal"
|
||||||
android:textSize="14sp"
|
android:layout_marginLeft="15dp"
|
||||||
android:layout_marginLeft="5dp"
|
android:textSize="21sp"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/yellow_00"
|
||||||
android:text="@string/assistir"
|
android:text="+100"
|
||||||
android:gravity="center"
|
android:drawableStart="@mipmap/task_gold"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
</LinearLayout>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<!--补签-->
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/action_complement"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="52dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:paddingHorizontal="30dp"
|
||||||
|
android:background="@mipmap/icon_action_but_bg"
|
||||||
|
android:visibility="gone">
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_weight="1"
|
||||||
android:layout_gravity="top|right"
|
android:textSize="18sp"
|
||||||
android:layout_marginTop="-20dp"
|
android:textColor="@color/white"
|
||||||
android:layout_marginRight="3dp"
|
android:text="@string/complement_hint"
|
||||||
android:src="@mipmap/icon_x2"/>
|
android:gravity="center"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:drawableStart="@mipmap/task_video"
|
||||||
|
android:drawablePadding="5dp"
|
||||||
|
/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@
|
||||||
<string name="version">Version\n</string>
|
<string name="version">Version\n</string>
|
||||||
<string name="title_cash_record">Dinheiro</string>
|
<string name="title_cash_record">Dinheiro</string>
|
||||||
<string name="sign_success_desc">Você ganhou uma recompensa!</string>
|
<string name="sign_success_desc">Você ganhou uma recompensa!</string>
|
||||||
|
<string name="complement_hint">Recuperar 1 dia de login</string>
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue