1:添加签到功能,在首页展示,跟在青少年模式下,

2:在任务页面展示签到功能
This commit is contained in:
2025-12-12 15:28:15 +08:00
parent 6825009aba
commit f646493800
17 changed files with 840 additions and 0 deletions

View File

@@ -0,0 +1,241 @@
package com.xscm.modulemain.dialog
import android.content.Context
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.databinding.DialogSignBinding
import com.xscm.moduleutil.bean.SignInData
import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import com.xscm.moduleutil.utils.ImageLoader
import com.xscm.moduleutil.widget.dialog.BaseDialog
import io.reactivex.disposables.Disposable
/**
* 项目名称:羽声语音
* 时间2025/12/9 18:21
* 用途:签到
*/
class SignInDialog(context: Context) : BaseDialog<DialogSignBinding>(context) {
var signInDataLists: List<SignInData>? = ArrayList<SignInData>()
private var onCloseCallback: (() -> Unit)? = null
fun setOnCloseListener(callback: () -> Unit) = apply {
onCloseCallback = callback
}
init {
// 设置对话框从底部弹出
window?.setGravity(Gravity.CENTER)
// 设置对话框的宽度为屏幕宽度
window?.setLayout(
(ScreenUtils.getScreenWidth() * 315f / 375).toInt(),
ViewGroup.LayoutParams.WRAP_CONTENT
)
// 添加动画效果
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
setCancelable(false)
setCanceledOnTouchOutside(false)
}
override fun getLayoutId(): Int {
return R.layout.dialog_sign
}
override fun initView() {
mBinding.ivClose.setOnClickListener {
onCloseCallback?.invoke()
dismiss()
}
mBinding.btnSign.setOnClickListener {
RetrofitClient.getInstance().dailyTasksSign(object : BaseObserver<String>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: String) {
var signInSuccessDialog=SignInSuccessDialog(context)
signInSuccessDialog.viewData(signInData)
signInSuccessDialog.setOnCloseListener {
onCloseCallback?.invoke()
}
signInSuccessDialog.show()
dismiss()
}
})
}
}
override fun initData() {
RetrofitClient.getInstance().signIn(object : BaseObserver<List<SignInData>>() {
override fun onSubscribe(d: Disposable) {
}
override fun onNext(t: List<SignInData>) {
signInDataLists = t
for (i in signInDataLists!!) {
setUpView(i)
}
}
})
}
var signInData = SignInData()
fun setUpView(signInData: SignInData) {
if (signInData.is_today == 1) {
this.signInData = signInData
if (signInData.sign_in_status == 1) {
mBinding.btnSign.text = "已签到"
mBinding.btnSign.isEnabled = false
mBinding.btnSign.setBackgroundResource(com.xscm.moduleutil.R.drawable.bg_r53_f3f3f3)
}
}
if (signInData.day == 1) {
mBinding.day1.tvDay.text = signInData.day.toString()
mBinding.day1.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day1.ivCollected.visibility = View.VISIBLE
mBinding.day1.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day1.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day1.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day1.ivSign
)
}
} else if (signInData.day == 2) {
mBinding.day2.tvDay.text = signInData.day.toString()
mBinding.day2.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day2.ivCollected.visibility = View.VISIBLE
mBinding.day2.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day2.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day2.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day2.ivSign
)
}
} else if (signInData.day == 3) {
mBinding.day3.tvDay.text = signInData.day.toString()
mBinding.day3.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day3.ivCollected.visibility = View.VISIBLE
mBinding.day3.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day3.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day3.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day3.ivSign
)
}
} else if (signInData.day == 4) {
mBinding.day4.tvDay.text = signInData.day.toString()
mBinding.day4.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day4.ivCollected.visibility = View.VISIBLE
mBinding.day4.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day4.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day4.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day4.ivSign
)
}
} else if (signInData.day == 5) {
mBinding.day5.tvDay.text = signInData.day.toString()
mBinding.day5.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day5.ivCollected.visibility = View.VISIBLE
mBinding.day5.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day5.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day5.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day5.ivSign
)
}
} else if (signInData.day == 6) {
mBinding.day6.tvDay.text = signInData.day.toString()
mBinding.day6.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day6.ivCollected.visibility = View.VISIBLE
mBinding.day6.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day6.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day6.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day6.ivSign
)
}
} else if (signInData.day == 7) {
mBinding.day7.tvDay.text = signInData.day.toString()
mBinding.day7.tvSiginPrice.text = signInData.gift_name + "*" + signInData.num
if (signInData.sign_in_status == 1) {
mBinding.day7.ivCollected.visibility = View.VISIBLE
mBinding.day7.root.setBackgroundResource(R.drawable.select_item_click)
ImageLoader.loadImage(
context,
mBinding.day7.ivSign,
signInData.base_image,
0.4f
)
} else {
mBinding.day7.ivCollected.visibility = View.GONE
com.xscm.moduleutil.utils.ImageUtils.loadHead(
signInData.base_image,
mBinding.day7.ivSign
)
}
}
}
}

View File

@@ -0,0 +1,57 @@
package com.xscm.modulemain.dialog
import android.content.Context
import android.view.Gravity
import android.view.ViewGroup
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.databinding.DialogSignSuccesBinding
import com.xscm.moduleutil.bean.SignInData
import com.xscm.moduleutil.utils.ImageUtils
import com.xscm.moduleutil.widget.dialog.BaseDialog
/**
* 项目名称:羽声语音
* 时间2025/12/12 9:37
* 用途:签到成功后展示页面
*/
class SignInSuccessDialog(context: Context) : BaseDialog<DialogSignSuccesBinding>(context) {
private var onCloseCallback: (() -> Unit)? = null
fun setOnCloseListener(callback: () -> Unit) = apply {
onCloseCallback = callback
}
init {
// 设置对话框从底部弹出
window?.setGravity(Gravity.CENTER)
// 设置对话框的宽度为屏幕宽度
window?.setLayout(
(ScreenUtils.getScreenWidth() * 315f / 375).toInt(),
ViewGroup.LayoutParams.WRAP_CONTENT
)
// 添加动画效果
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
setCancelable(false)
setCanceledOnTouchOutside(false)
}
override fun getLayoutId(): Int {
return R.layout.dialog_sign_succes
}
override fun initView() {
mBinding.btnSign.setOnClickListener {
onCloseCallback?.invoke()
dismiss()
}
}
override fun initData() {
}
fun viewData(signInData: SignInData) {
ImageUtils.loadHead(signInData.base_image, mBinding.imV)
mBinding.tvSignPrice.text ="签到成功 "+ signInData.gift_name+""+signInData.num
}
}