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,115 @@
package com.xscm.moduleutil.bean
import com.chad.library.adapter.base.entity.MultiItemEntity
/**
* 项目名称:羽声语音
* 时间2025/12/12 10:35
* 用途:签到实体类
*/
class SignInData : MultiItemEntity{
val TYPE_NORMAL: Int = 0 // 普通类型使用day_sgin布局
val TYPE_DOUBLE: Int = 1 // 双倍宽度类型使用day_sgin2布局
var viewType: Int = TYPE_NORMAL // 默认为普通类型
var day: Int = 0 //第几天
var sign_in_date: String = "" //日期
var sign_in_status: Int = 0 // 签到状态1已签到 0未签到
var sign_in_status_str: String = "" //已签到
var is_today: Int = 0 //是否是当天 0否 1是
var gift_name: String = "" //礼物名称
var num: String = "" //数量
var gift_price: Int = 0 //价格
var type: Int = 0 //类型: 1金币 2礼物 3装扮 4钻石
var base_image: String = "" //礼物图片
override fun getItemType(): Int {
return viewType
}
/* "gift_bag": [
{
"day": 1, //第几天
"sign_in_date": "2025-12-09", //日期
"sign_in_status": 1, //签到状态1已签到 0未签到
"sign_in_status_str": "已签到",
"is_today": 0, //是否是当天 0否 1是
"gift_name": "金币", //礼物名称
"num": 1, //数量
"gift_price": 1, //价格
"type": 1, //类型: 1金币 2礼物 3装扮 4钻石
"base_image": "https://test.vespa.qxyushen.top/static/image/icon/gold.png" //礼物图片
},
{
"day": 2,
"sign_in_date": "2025-12-10",
"sign_in_status": 1,
"sign_in_status_str": "已签到",
"is_today": 0,
"gift_name": "打工狗",
"num": "1 个",
"gift_price": "9",
"type": 2,
"base_image": "https://cos.xscmmidi.site/admin/3143tianxuanbanzhuangou_17615346376493.png"
},
{
"day": 3,
"sign_in_date": "2025-12-11",
"sign_in_status": 1,
"sign_in_status_str": "已签到",
"is_today": 0,
"gift_name": "神皇",
"num": "3 天",
"gift_price": 30,
"type": 3,
"base_image": "https://midi01.oss-cn-beijing.aliyuncs.com/5544shenhuang_17579016149523.png"
},
{
"day": 4,
"sign_in_date": "2025-12-12",
"sign_in_status": 1,
"sign_in_status_str": "已签到",
"is_today": 1,
"gift_name": "心动喷发",
"num": "2 个",
"gift_price": "100",
"type": 2,
"base_image": "https://cos.xscmmidi.site/admin/3300xindongpenfa_17615347008740.png"
},
{
"day": 5,
"sign_in_date": "2025-12-13",
"sign_in_status": 0,
"sign_in_status_str": "未签到",
"is_today": 0,
"gift_name": "钻石",
"num": 20,
"gift_price": 1,
"type": 4,
"base_image": "https://test.vespa.qxyushen.top/static/image/icon/gold.png"
},
{
"day": 6,
"sign_in_date": "2025-12-14",
"sign_in_status": 0,
"sign_in_status_str": "未签到",
"is_today": 0,
"gift_name": "王者之戒",
"num": "1 个",
"gift_price": "19",
"type": 2,
"base_image": "https://cos.xscmmidi.site/admin/5390wangzhezhijie_17615353361010.png"
},
{
"day": 7,
"sign_in_date": "2025-12-15",
"sign_in_status": 0,
"sign_in_status_str": "未签到",
"is_today": 0,
"gift_name": "财源滚滚",
"num": "30 天",
"gift_price": 288,
"type": 3,
"base_image": "https://midi01.oss-cn-beijing.aliyuncs.com/2160caiyuangunguntouxiangkuang_17579008394073.png"
}
]*/
}

View File

@@ -0,0 +1,11 @@
package com.xscm.moduleutil.bean
/**
* 项目名称:羽声语音
* 时间2025/12/12 14:54
* 用途:签到状态
*/
class TasksSignStatus {
var status : Int=0
var status_str: String=""
}

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:centerColor="#CFFFDC"
android:endColor="#CFFFDC"
android:startColor="#DEFF85"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="@dimen/dp_16"
/>
</shape>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:centerColor="#90FF86"
android:endColor="#E7FE67"
android:startColor="#5CFBBD"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="@dimen/dp_99"
/>
</shape>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:centerColor="#CFFFDC"
android:endColor="#CFFFDC"
android:startColor="#DEFF85"
android:type="linear"
android:useLevel="true" />
<corners
android:bottomLeftRadius="4dp"
android:bottomRightRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp" />
</shape>

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
}
}

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/dp_5"
android:background="@drawable/selector_sign_bg"
>
<TextView
android:id="@+id/tv_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_4"
android:fontFamily="@font/youshebiaotihei"
android:gravity="center"
android:textColor="#FFC273"
android:textSize="@dimen/sp_32"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="7" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DAY"
app:layout_constraintStart_toEndOf="@+id/tv_day"
app:layout_constraintTop_toTopOf="@id/tv_day"
android:textColor="#FFC273"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_4"
android:textSize="@dimen/sp_12"
android:gravity="center"
/>
<ImageView
android:layout_width="@dimen/dp_33"
android:layout_height="@dimen/dp_33"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="@dimen/dp_19"
app:layout_constraintEnd_toEndOf="parent"
tools:src="@mipmap/ic_launcher"
android:scaleType="fitCenter"
android:id="@+id/iv_sign" />
<ImageView
android:layout_width="@dimen/dp_33"
android:layout_height="@dimen/dp_33"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="@dimen/dp_19"
app:layout_constraintEnd_toEndOf="parent"
android:src="@mipmap/ic_collected"
android:scaleType="fitCenter"
android:id="@+id/iv_collected"
android:visibility="gone"
tools:visibility="visible"/>
<TextView
android:id="@+id/tv_sigin_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
tools:text="签到礼物名称"
app:layout_constraintTop_toBottomOf="@+id/iv_sign"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_9" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:paddingBottom="@dimen/dp_5"
android:background="@drawable/selector_sign_bg">
<TextView
android:id="@+id/tv_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_4"
android:fontFamily="@font/youshebiaotihei"
android:gravity="center"
android:textColor="#FFC273"
android:textSize="@dimen/sp_32"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="7" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DAY"
app:layout_constraintStart_toEndOf="@+id/tv_day"
app:layout_constraintTop_toTopOf="@id/tv_day"
android:textColor="#FFC273"
android:layout_marginStart="@dimen/dp_4"
android:layout_marginTop="@dimen/dp_4"
android:textSize="@dimen/sp_12"
android:gravity="center"
/>
<ImageView
android:layout_width="@dimen/dp_33"
android:layout_height="@dimen/dp_33"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="@dimen/dp_19"
app:layout_constraintEnd_toEndOf="parent"
tools:src="@mipmap/ic_launcher"
android:scaleType="fitCenter"
android:id="@+id/iv_sign" />
<ImageView
android:layout_width="@dimen/dp_33"
android:layout_height="@dimen/dp_33"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_30"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="@dimen/dp_19"
app:layout_constraintEnd_toEndOf="parent"
tools:src="@mipmap/ic_collected"
android:scaleType="fitCenter"
android:id="@+id/iv_collected"
android:visibility="gone"
tools:visibility="visible"/>
<TextView
android:id="@+id/tv_sigin_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center"
tools:text="签到礼物名称"
app:layout_constraintTop_toBottomOf="@+id/iv_sign"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_9" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/im_v"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@mipmap/shape_dialog_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/rv_sign"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:layout_marginHorizontal="@dimen/dp_22"-->
<!-- app:layout_constraintTop_toTopOf="@id/im_v"-->
<!-- app:layout_constraintBottom_toBottomOf="@id/im_v"-->
<!-- tool:listitem="@layout/day_sgin"-->
<!-- tool:itemCount="4"-->
<!-- />-->
<LinearLayout
android:id="@+id/ll1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_22"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@id/im_v"
app:layout_constraintStart_toStartOf="@id/im_v"
app:layout_constraintTop_toTopOf="@id/im_v"
app:layout_constraintBottom_toBottomOf="@id/im_v">
<include
android:id="@+id/day1"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_weight="1" />
<include
android:id="@+id/day2"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_weight="1" />
<include
android:id="@+id/day3"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_weight="1" />
<include
android:id="@+id/day4"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_88"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="@dimen/dp_22"
android:layout_marginTop="12.5dp"
android:orientation="horizontal"
app:layout_constraintTop_toBottomOf="@+id/ll1">
<include
android:id="@+id/day5"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_weight="1" />
<include
android:id="@+id/day6"
layout="@layout/day_sgin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="5dp"
android:layout_weight="1" />
<include
android:id="@+id/day7"
layout="@layout/day_sgin2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
</LinearLayout>
<TextView
android:id="@+id/btn_sign"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="@dimen/dp_37"
android:layout_marginTop="15dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_r99_e7fe67_90ff86_5cfbbd"
android:gravity="center"
android:paddingVertical="@dimen/dp_15"
android:text="立即签到"
android:textColor="@color/black"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/im_v"
app:layout_constraintEnd_toEndOf="@id/im_v"
app:layout_constraintStart_toStartOf="@id/im_v" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_10"
android:src="@mipmap/index_close_youth"
android:scaleType="fitCenter"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/im_v" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="@drawable/bg_r16_deff85_cfffdc"
android:layout_marginHorizontal="10dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_sign_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="签到成功 金币+10"
android:layout_gravity="center_horizontal"
android:textSize="15sp"
android:layout_marginTop="190dp"
android:textColor="@color/colorPrimary"
/>
<TextView
android:id="@+id/btn_sign"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="@dimen/dp_37"
android:layout_marginTop="15dp"
android:layout_marginBottom="20dp"
android:background="@drawable/bg_r99_e7fe67_90ff86_5cfbbd"
android:gravity="center"
android:paddingVertical="@dimen/dp_15"
android:text="开心收下"
android:textColor="@color/black"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/im_v"
app:layout_constraintEnd_toEndOf="@id/im_v"
app:layout_constraintStart_toStartOf="@id/im_v" />
</LinearLayout>
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_percent="0.4"
app:layout_constraintWidth_percent="0.3"
android:layout_marginBottom="@dimen/dp_90"
android:id="@+id/im_v"
android:src="@mipmap/ic_launcher"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB