From 993b2bf5e0e961f118ed0d4baf9e619d60625323 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 26 Nov 2025 11:22:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=8A=B6=E6=80=81=E5=88=87?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/fragments/task/DailySignDialog.kt | 38 +++++++++++++------ .../vididin/widget/DailySignItemView.kt | 30 +++++++++++++-- .../res/drawable/bg_daily_sign_day_item.xml | 9 +++++ app/src/main/res/layout/daily_sign_item.xml | 7 +++- 4 files changed, 68 insertions(+), 16 deletions(-) create mode 100644 app/src/main/res/drawable/bg_daily_sign_day_item.xml diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt index 0bb6255..34c961b 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt @@ -5,10 +5,13 @@ import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.widget.BindingDialog import com.gamedog.vididin.databinding.DialogDailySignBinding import com.gamedog.vididin.manager.TaskManager +import com.gamedog.vididin.widget.DailySignItemView class DailySignDialog(context: Context) : BindingDialog(context, DialogDailySignBinding::inflate) { private var mDataList: List? = emptyList() + private var mSignItemList: MutableList = mutableListOf() + init { build() @@ -42,22 +45,35 @@ class DailySignDialog(context: Context) : BindingDialog( private fun initDailySignItems() { with(mBinding) { - mDataList?.size?.let { - if (it >= 7) { - signItem1.setData(mDataList!![0]) - signItem2.setData(mDataList!![1]) - signItem3.setData(mDataList!![2]) - signItem4.setData(mDataList!![3]) - signItem5.setData(mDataList!![4]) - signItem6.setData(mDataList!![5]) - signItem7.setData(mDataList!![6]) + signItem7.setLargeWidthMode() + + mSignItemList.add(signItem1) + mSignItemList.add(signItem2) + mSignItemList.add(signItem3) + mSignItemList.add(signItem4) + mSignItemList.add(signItem5) + mSignItemList.add(signItem6) + mSignItemList.add(signItem7) + + mDataList?.let { + mSignItemList.forEachIndexed { index, itemView-> + itemView.setData(mDataList!![index], { isSelected -> + handleItemSelectStateChanged(index, isSelected) + }) } } - - signItem7.setLargeWidthMode() } } + private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) { + mSignItemList.forEachIndexed { index, itemView -> + if (itemIndex != index) { + itemView.setSelectState(false) + } + } + } + + private fun handleRightButClicked() { } diff --git a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt index 16dfa7d..eb9d7ac 100644 --- a/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt +++ b/app/src/main/java/com/gamedog/vididin/widget/DailySignItemView.kt @@ -5,6 +5,7 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.widget.LinearLayout +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 @@ -17,20 +18,32 @@ class DailySignItemView @JvmOverloads constructor( ) : LinearLayout(context, attrs, defStyleAttr) { private lateinit var mData: RewardDetail - private lateinit var mBinding: DailySignItemBinding + 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) { + fun setData(data: RewardDetail, selectStateCallback: (isSelected: Boolean)->Unit) { mData = data + mSelectStateCallback = selectStateCallback mBinding.tvGoldNum.text = "" + mData.value mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mData.day } @@ -40,6 +53,17 @@ class DailySignItemView @JvmOverloads constructor( mBinding.ivBg.setImageResource(R.mipmap.bg_biginner_daily_large) } + fun setSelectState(isSelect: Boolean) { + mIsSelected = isSelect + if (mIsSelected) { + mBinding.rlRoot.setBackgroundResource(R.drawable.bg_daily_sign_day_item) + } else { + mBinding.rlRoot.background = null + } + } + + + } diff --git a/app/src/main/res/drawable/bg_daily_sign_day_item.xml b/app/src/main/res/drawable/bg_daily_sign_day_item.xml new file mode 100644 index 0000000..e9733e6 --- /dev/null +++ b/app/src/main/res/drawable/bg_daily_sign_day_item.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/app/src/main/res/layout/daily_sign_item.xml b/app/src/main/res/layout/daily_sign_item.xml index 5440421..39c2080 100644 --- a/app/src/main/res/layout/daily_sign_item.xml +++ b/app/src/main/res/layout/daily_sign_item.xml @@ -1,6 +1,7 @@ + android:id="@+id/rl_root" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="2dp">