Commit cdae5146 authored by wanglei's avatar wanglei

...

parent 446fb549
package com.base.appzxhy.bean
data class Benefits(
val title: String,
val task: List<BenefitsTask>,
val timeStart: Long = 0,//奖励开始时间
val timeEnd: Long = 0,//奖励结束时间
)
data class BenefitsTask(
val taskName: String,
val coin: Int,//任务奖励金币
val isFinish: Boolean,//任务是否完成
val taskDesc: String = "",//任务额外描述
val btnDesc: String = "",//任务按钮
val taskIndex: Int = 0,//任务进度
val taskTotal: Int = 0//任务进度总数
)
package com.base.appzxhy.ui.adapter
import android.content.Context
import android.view.ViewGroup
import com.base.appzxhy.bean.BenefitsTask
import com.base.appzxhy.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter
abstract class BaseBenefitsTaskAdapter(
val layout: Int
) : BaseQuickAdapter<BenefitsTask, CommonViewHolder>() {
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): CommonViewHolder {
return CommonViewHolder(layout.inflate(parent))
}
}
\ No newline at end of file
package com.base.appzxhy.ui.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.view.ViewGroup
import com.base.appzxhy.R
......@@ -8,11 +9,19 @@ import com.base.appzxhy.databinding.ItemDayBalanceBinding
import com.base.appzxhy.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter
class CheckInkAdapter : BaseQuickAdapter<CheckInBean, CommonViewHolder>() {
class CheckInAdapter : BaseQuickAdapter<CheckInBean, CommonViewHolder>() {
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: CommonViewHolder, position: Int, item: CheckInBean?) {
item ?: return
val binding = ItemDayBalanceBinding.bind(holder.itemView)
if (item.checked) {
binding.iv.setImageResource(R.mipmap.r_wancheng)
} else {
binding.iv.setImageResource(R.mipmap.r_day)
}
binding.tvDay.text = item.dayDesc
binding.tvBalance.text = "+${item.balance}"
}
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): CommonViewHolder {
......
package com.base.appzxhy.ui.concatAdapter
import android.annotation.SuppressLint
import android.content.Context
import android.view.ViewGroup
import com.base.appzxhy.R
import com.base.appzxhy.bean.Benefits
import com.base.appzxhy.bean.BenefitsTask
import com.base.appzxhy.databinding.ItemBenefitsDailyBinding
import com.base.appzxhy.databinding.ItemBenefitsNewUserBinding
import com.base.appzxhy.databinding.ItemBenefitsTaskBinding
import com.base.appzxhy.ui.adapter.BaseBenefitsTaskAdapter
import com.base.appzxhy.ui.adapter.CommonViewHolder
import com.base.appzxhy.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter
/**
* 日常奖励
*/
class DailyBenefitsTaskAdapter : BaseQuickAdapter<Benefits, CommonViewHolder>() {
override fun onBindViewHolder(holder: CommonViewHolder, position: Int, item: Benefits?) {
item ?: return
val binding = ItemBenefitsDailyBinding.bind(holder.itemView)
val adapter = TaskAdapter()
binding.rv.adapter = adapter
adapter.submitList(item.task)
}
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): CommonViewHolder {
return CommonViewHolder(R.layout.item_benefits_daily.inflate(parent))
}
inner class TaskAdapter : BaseBenefitsTaskAdapter(R.layout.item_benefits_task) {
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: CommonViewHolder, position: Int, item: BenefitsTask?) {
item ?: return
val binding = ItemBenefitsTaskBinding.bind(holder.itemView)
binding.tvName.text = item.taskName
binding.tvCoin.text = "+" + item.coin.toString()
binding.tvBtn.text = item.btnDesc
}
}
}
\ No newline at end of file
package com.base.appzxhy.ui.concatAdapter
import android.annotation.SuppressLint
import android.content.Context
import android.view.ViewGroup
import com.base.appzxhy.R
import com.base.appzxhy.bean.Benefits
import com.base.appzxhy.bean.BenefitsTask
import com.base.appzxhy.databinding.ItemBenefitsNewUserBinding
import com.base.appzxhy.databinding.ItemBenefitsTaskBinding
import com.base.appzxhy.ui.adapter.BaseBenefitsTaskAdapter
import com.base.appzxhy.ui.adapter.CommonViewHolder
import com.base.appzxhy.utils.XmlEx.inflate
import com.chad.library.adapter4.BaseQuickAdapter
/**
* 新用户奖励
*/
class NewUserBenefitsAdapter : BaseQuickAdapter<Benefits, CommonViewHolder>() {
override fun onBindViewHolder(holder: CommonViewHolder, position: Int, item: Benefits?) {
item ?: return
val binding = ItemBenefitsNewUserBinding.bind(holder.itemView)
val adapter = TaskAdapter()
binding.rv.adapter = adapter
adapter.submitList(item.task)
}
override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): CommonViewHolder {
return CommonViewHolder(R.layout.item_benefits_new_user.inflate(parent))
}
inner class TaskAdapter : BaseBenefitsTaskAdapter(R.layout.item_benefits_task) {
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: CommonViewHolder, position: Int, item: BenefitsTask?) {
item ?: return
val binding = ItemBenefitsTaskBinding.bind(holder.itemView)
binding.tvName.text = item.taskName
binding.tvCoin.text = "+" + item.coin.toString()
binding.tvBtn.text = item.btnDesc
}
}
}
\ No newline at end of file
package com.base.appzxhy.ui.main
import androidx.core.view.updatePadding
import androidx.recyclerview.widget.ConcatAdapter
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.bean.Benefits
import com.base.appzxhy.bean.BenefitsTask
import com.base.appzxhy.bean.CheckInBean
import com.base.appzxhy.databinding.FragmentRewardsBinding
import com.base.appzxhy.ui.adapter.CheckInAdapter
import com.base.appzxhy.ui.concatAdapter.DailyBenefitsTaskAdapter
import com.base.appzxhy.ui.concatAdapter.NewUserBenefitsAdapter
import com.base.appzxhy.utils.BarUtils
class RewardsFragment : BaseFragment<FragmentRewardsBinding>(FragmentRewardsBinding::inflate) {
private val concatAdapter: ConcatAdapter = ConcatAdapter()
override fun initView() {
super.initView()
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
initCheckInAdapter()
initBenefitsAdapter()
}
private fun initCheckInAdapter() {
......@@ -25,7 +34,44 @@ class RewardsFragment : BaseFragment<FragmentRewardsBinding>(FragmentRewardsBind
CheckInBean(6, "Days6", 30),
CheckInBean(7, "Days7", 50),
)
// binding.rv.adapter =
val adapter = CheckInAdapter()
binding.rvDayCheck.adapter = adapter
adapter.submitList(list)
}
private fun initBenefitsAdapter() {
binding.rvBenefits.adapter = concatAdapter
concatAdapter.addAdapter(NewUserBenefitsAdapter().apply {
submitList(
listOf(
Benefits(
"New User Benefits", task = listOf(
BenefitsTask("Login rewards", 50, false),
BenefitsTask("Add 1 series to 「My List」", 30, false),
BenefitsTask("Turn on notifications", 30, false),
BenefitsTask("Share 1 series with your friend", 30, false),
)
)
)
)
})
concatAdapter.addAdapter(DailyBenefitsTaskAdapter().apply {
submitList(
listOf(
Benefits(
"Today's Benefits", task = listOf(
BenefitsTask("Earn rewards(0/15)", 6, false),
BenefitsTask("Watch ads(0/7)", 10, false),
BenefitsTask("Watch 5 minus", 10, false),
BenefitsTask("Watch 10 minus", 20, false),
BenefitsTask("Watch 15 minus", 30, false),
BenefitsTask("Watch 30 minus", 60, false),
)
)
)
)
})
}
override fun initListener() {
......
<?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:endColor="#33FF9771"
android:startColor="#336d3c06" />
</shape>
\ No newline at end of file
......@@ -3,8 +3,8 @@
android:shape="rectangle">
<gradient
android:angle="-90"
android:endColor="#4dff9771"
android:startColor="#4d6d3c06" />
android:endColor="#33FF9771"
android:startColor="#336d3c06" />
<corners android:radius="10dp" />
</shape>
\ No newline at end of file
<?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:endColor="#336d3c06"
android:startColor="#33FF9771" />
<corners android:topLeftRadius="10dp" android:topRightRadius="10dp" />
</shape>
\ No newline at end of file
......@@ -72,14 +72,15 @@
android:layout_height="wrap_content"
android:src="@mipmap/re_lihetu"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="-45dp"
android:background="@drawable/bg_6d3c06_ff9771"
android:background="@drawable/bg_6d3c06_ff9771_a20_10"
android:minHeight="160dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/ivlihe">
......@@ -94,7 +95,7 @@
android:textSize="12sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:id="@+id/rvDayCheck"
android:layout_width="match_parent"
android:layout_height="65dp"
android:layout_marginHorizontal="8dp"
......@@ -123,5 +124,13 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvBenefits"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:overScrollMode="never"
android:paddingVertical="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardBackgroundColor="#00000000"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_6d3c06_ff9771_a20"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="42dp"
android:background="@drawable/bg_ff9771_6d3c06_a20"
tools:ignore="UselessParent">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="12dp"
android:text="@string/today_s_benefits"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="14dp"
android:textColor="@color/white"
android:textSize="13sp"
tools:text="4 Days 01:34:30" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="5"
tools:listitem="@layout/item_benefits_task" />
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
app:cardBackgroundColor="#00000000"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_6d3c06_ff9771_a20"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="42dp"
android:background="@drawable/bg_ff9771_6d3c06_a20"
tools:ignore="UselessParent">
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="12dp"
android:text="@string/new_user_benefits"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="14dp"
android:textColor="@color/white"
android:textSize="13sp"
tools:text="4 Days 01:34:30" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="5"
tools:listitem="@layout/item_benefits_task" />
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
<?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:paddingVertical="13dp">
<TextView
android:id="@+id/tvName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:textColor="@color/white"
android:textSize="15sp"
app:layout_constraintEnd_toStartOf="@id/tvBtn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Login rewards" />
<ImageView
android:id="@+id/ivCoin"
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginTop="2dp"
android:src="@mipmap/p_djinbi"
app:layout_constraintStart_toStartOf="@id/tvName"
app:layout_constraintTop_toBottomOf="@id/tvName"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tvCoin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:textColor="#FFE8C3"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="@id/ivCoin"
app:layout_constraintStart_toEndOf="@id/ivCoin"
app:layout_constraintTop_toTopOf="@id/ivCoin"
tools:text="+50" />
<TextView
android:id="@+id/tvBtn"
android:layout_width="84dp"
android:layout_height="32dp"
android:layout_marginEnd="10dp"
android:background="@mipmap/r_btn_xs"
android:gravity="center"
android:textColor="#781A03"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText"
tools:text="GO" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -17,6 +17,7 @@
android:textSize="12sp" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
......
......@@ -43,5 +43,7 @@
<string name="feedback">Feedback</string>
<string name="language">Language</string>
<string name="setting">Setting</string>
<string name="new_user_benefits">New User Benefits</string>
<string name="today_s_benefits">Today\'s Benefits</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment