从配置文件动态读取 每日观看个数阶梯任务
This commit is contained in:
parent
f4aebf8e9c
commit
1542db851e
|
|
@ -2,7 +2,9 @@ package com.gamedog.vididin.main.fragments
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.LinearLayout
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
|
|
@ -23,6 +25,7 @@ import com.gamedog.vididin.core.login.login.AccountManager
|
||||||
import com.gamedog.vididin.main.WatchVideoDialog
|
import com.gamedog.vididin.main.WatchVideoDialog
|
||||||
import com.gamedog.vididin.main.fragments.task.DailySignDialog
|
import com.gamedog.vididin.main.fragments.task.DailySignDialog
|
||||||
import com.gamedog.vididin.main.fragments.task.TaskBean
|
import com.gamedog.vididin.main.fragments.task.TaskBean
|
||||||
|
import com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
||||||
import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener
|
import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener
|
||||||
import com.gamedog.vididin.manager.TaskManager
|
import com.gamedog.vididin.manager.TaskManager
|
||||||
import com.gamedog.vididin.router.Router
|
import com.gamedog.vididin.router.Router
|
||||||
|
|
@ -38,10 +41,13 @@ import com.gamedog.vididin.main.fragments.home.YoutubeUiState as UiState
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTabClickAgainListener, OnFragmentBackgroundListener {
|
class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTabClickAgainListener, OnFragmentBackgroundListener {
|
||||||
|
|
||||||
|
|
||||||
private var mTaskConfig: TaskBean? = null
|
private var mTaskConfig: TaskBean? = null
|
||||||
override val mViewModel: ViewModel by viewModels()
|
override val mViewModel: ViewModel by viewModels()
|
||||||
override var isBackgroundBright: Boolean = true
|
override var isBackgroundBright: Boolean = true
|
||||||
|
|
||||||
|
private val mDailyWatchVideoTaskViewList = mutableListOf<DailyTaskItemView>()
|
||||||
|
|
||||||
|
|
||||||
override fun inflateViewBinding(
|
override fun inflateViewBinding(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
|
|
@ -122,31 +128,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dailyTaskWatch1.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, 1, R.string.resgatar)
|
addDailySubTasks()
|
||||||
dailyTaskWatch1.setActionFun {
|
|
||||||
gotoWithVideo()
|
|
||||||
}
|
|
||||||
|
|
||||||
dailyTaskWatch5.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, 5, R.string.go_and_do)
|
|
||||||
dailyTaskWatch5.setActionFun {
|
|
||||||
gotoWithVideo()
|
|
||||||
}
|
|
||||||
|
|
||||||
dailyTaskWatch10.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, 10, R.string.go_and_do)
|
|
||||||
dailyTaskWatch10.setActionFun {
|
|
||||||
gotoWithVideo()
|
|
||||||
}
|
|
||||||
|
|
||||||
dailyTaskWatch20.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, 20, R.string.go_and_do)
|
|
||||||
dailyTaskWatch20.setActionFun {
|
|
||||||
gotoWithVideo()
|
|
||||||
}
|
|
||||||
|
|
||||||
dailyTaskWatch30.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, 30, R.string.go_and_do)
|
|
||||||
dailyTaskWatch30.setActionFun {
|
|
||||||
gotoWithVideo()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
updateUIGoldTotal()
|
updateUIGoldTotal()
|
||||||
updateUICashTotal()
|
updateUICashTotal()
|
||||||
|
|
@ -157,6 +139,34 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun addDailySubTasks() {
|
||||||
|
|
||||||
|
val dailyWatchVideoTask = TaskManager.instance().getDailyVideoTask()
|
||||||
|
if (dailyWatchVideoTask != null && dailyWatchVideoTask.status == "active"
|
||||||
|
&& dailyWatchVideoTask.reward_details.isNotEmpty()) {
|
||||||
|
|
||||||
|
dailyWatchVideoTask.reward_details.forEachIndexed {index, detail ->
|
||||||
|
val watchTaskItemView = DailyTaskItemView(requireActivity())
|
||||||
|
watchTaskItemView.setActionFun {
|
||||||
|
gotoWithVideo()
|
||||||
|
}
|
||||||
|
mDailyWatchVideoTaskViewList.add(watchTaskItemView)
|
||||||
|
|
||||||
|
binding?.dailyTasksContainer!!.run {
|
||||||
|
watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title,
|
||||||
|
detail.target_count, detail.value, if (index == 0) R.string.resgatar else R.string.go_and_do)
|
||||||
|
|
||||||
|
addView(watchTaskItemView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||||
|
if (index != dailyWatchVideoTask.reward_details.size - 1) {
|
||||||
|
val separateLine = View(requireActivity())
|
||||||
|
separateLine.setBackgroundResource(R.color.gray_f2)
|
||||||
|
addView(separateLine, LinearLayout.LayoutParams.MATCH_PARENT, ResUtil.getPixelSize(R.dimen.dp1))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun updateUICashTotal() {
|
private fun updateUICashTotal() {
|
||||||
binding?.tvCashTotal?.text = buildString {
|
binding?.tvCashTotal?.text = buildString {
|
||||||
append(ResUtil.getString(R.string.cash))
|
append(ResUtil.getString(R.string.cash))
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,10 @@ class DailyTaskItemView @JvmOverloads constructor(
|
||||||
attrs: AttributeSet? = null,
|
attrs: AttributeSet? = null,
|
||||||
defStyleAttr: Int = 0
|
defStyleAttr: Int = 0
|
||||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||||
|
private var mRewardNum: Int = 0
|
||||||
|
private var mNeedWatchTotal: Int = 0
|
||||||
private lateinit var mAction: () -> Unit
|
private lateinit var mAction: () -> Unit
|
||||||
private lateinit var mBinding: DailyTaskItemViewBinding
|
private var mBinding: DailyTaskItemViewBinding
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -33,21 +35,23 @@ class DailyTaskItemView @JvmOverloads constructor(
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fun initUI(titleIconRes: Int, titleRes: Int, videosNum: Int, actionRes: Int) {
|
fun initUI(titleIconRes: Int, titleRes: Int, videosNum: Int, goldReward: Int, actionRes: Int) {
|
||||||
|
mRewardNum = goldReward
|
||||||
|
mNeedWatchTotal = videosNum
|
||||||
|
|
||||||
mBinding.ivItemIcon.setImageResource(titleIconRes)
|
mBinding.ivItemIcon.setImageResource(titleIconRes)
|
||||||
mBinding.tvItemTitle.text = String.format(ResUtil.getString(titleRes), videosNum)
|
mBinding.tvItemTitle.text = String.format(ResUtil.getString(titleRes), videosNum)
|
||||||
mBinding.tvAction.setText(actionRes)
|
mBinding.tvAction.setText(actionRes)
|
||||||
|
mBinding.tvRewardNum.text = "+$goldReward"
|
||||||
|
mBinding.tvItemProgress.text = "(0/$videosNum)"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setProgressText(progress: Int, progressText: String) {
|
fun updateProgress(finishVideoNum: Int) {
|
||||||
mBinding.tvItemProgress.text = progressText
|
val showWatchedNum = if (finishVideoNum > mNeedWatchTotal) mNeedWatchTotal else finishVideoNum
|
||||||
mBinding.itemProgress.setProgress(progress)
|
mBinding.tvItemProgress.text = "($showWatchedNum/$mNeedWatchTotal)"
|
||||||
|
mBinding.itemProgress.setProgress(showWatchedNum/mNeedWatchTotal)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setRewardInfo(rewardIconRes: Int, rewardNum: Int) {
|
|
||||||
mBinding.tvRewardNum.text = "" + rewardNum
|
|
||||||
mBinding.ivRewardIcon.setImageResource(rewardIconRes)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setActionFun(action: ()->Unit) {
|
fun setActionFun(action: ()->Unit) {
|
||||||
mAction = action
|
mAction = action
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textColor="@color/gray6"
|
android:textColor="@color/gray6"
|
||||||
android:text="(1/5)"
|
android:text="(0/5)"
|
||||||
/>
|
/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -473,66 +473,13 @@
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/daily_tasks_container"
|
||||||
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:paddingHorizontal="15dp"
|
android:paddingHorizontal="15dp"
|
||||||
android:background="@drawable/vididinapp_feature_message_bg_task_login"
|
android:background="@drawable/vididinapp_feature_message_bg_task_login"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
<com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
|
||||||
android:id="@+id/daily_task_watch_1"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="@color/gray_f2"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
|
||||||
android:id="@+id/daily_task_watch_5"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="@color/gray_f2"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
|
||||||
android:id="@+id/daily_task_watch_10"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="@color/gray_f2"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
|
||||||
android:id="@+id/daily_task_watch_20"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:background="@color/gray_f2"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
|
|
||||||
android:id="@+id/daily_task_watch_30"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,5 @@
|
||||||
<dimen name="main_tab_item_image_size">30dp</dimen>
|
<dimen name="main_tab_item_image_size">30dp</dimen>
|
||||||
<dimen name="main_tab_item_padding_vertical">14dp</dimen>
|
<dimen name="main_tab_item_padding_vertical">14dp</dimen>
|
||||||
<dimen name="main_tab_item_title_test_size">16sp</dimen>
|
<dimen name="main_tab_item_title_test_size">16sp</dimen>
|
||||||
|
<dimen name="dp1">1dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue