From 6dd6502c5ad880c024a990ad8daff145b7a9763c Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Fri, 5 Dec 2025 14:56:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95UI=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beans/{Transaction.kt => RecordCash.kt} | 2 +- .../com/gamedog/vididin/beans/RecordGold.kt | 12 +++ .../withdrawrecord/RecordCashRvAdapter.kt | 51 ++++++++++ .../withdrawrecord/RecordCashViewModel.kt | 23 +++++ ...ctionAdapter.kt => RecordGoldRvAdapter.kt} | 18 ++-- .../withdrawrecord/RecordGoldViewModel.kt | 23 +++++ .../withdrawrecord/ViewPagerAdapter.kt | 7 +- .../withdrawrecord/WithdrawRecordActivity.kt | 24 ++++- .../fragments/CashRecordFragment.kt | 95 +++++++++++------- .../fragments/DinheiroFragment.kt | 77 --------------- .../fragments/GoldRecordFragment.kt | 98 ++++++++++++------- .../main/res/drawable/bg_record_tab_cash.xml | 6 ++ .../main/res/drawable/bg_record_tab_gold.xml | 7 ++ .../res/layout/activity_withdraw_record.xml | 2 +- .../layout/fragment_withdraw_record_cash.xml | 45 +++++++-- .../layout/fragment_withdraw_record_gold.xml | 45 +++++++-- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 3 + 18 files changed, 363 insertions(+), 176 deletions(-) rename app/src/main/java/com/gamedog/vididin/beans/{Transaction.kt => RecordCash.kt} (92%) create mode 100644 app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt create mode 100644 app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt create mode 100644 app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashViewModel.kt rename app/src/main/java/com/gamedog/vididin/features/withdrawrecord/{TransactionAdapter.kt => RecordGoldRvAdapter.kt} (67%) create mode 100644 app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldViewModel.kt delete mode 100644 app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/DinheiroFragment.kt create mode 100644 app/src/main/res/drawable/bg_record_tab_cash.xml create mode 100644 app/src/main/res/drawable/bg_record_tab_gold.xml diff --git a/app/src/main/java/com/gamedog/vididin/beans/Transaction.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt similarity index 92% rename from app/src/main/java/com/gamedog/vididin/beans/Transaction.kt rename to app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt index a0cec70..dfce400 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/Transaction.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt @@ -1,6 +1,6 @@ package com.gamedog.vididin.beans -data class Transaction( +data class RecordCash( val id: Long, val dateTime: String, val status: TransactionStatus, diff --git a/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt new file mode 100644 index 0000000..dd81f46 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt @@ -0,0 +1,12 @@ +package com.gamedog.vididin.beans + +data class RecordGold( + val id: Long, + val dateTime: String, + val status: TransactionStatus, + val statusText: String, + val description: String, + val amount: String, + val amountColor: Int +) + diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt new file mode 100644 index 0000000..f47911d --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt @@ -0,0 +1,51 @@ +package com.gamedog.vididin.features.withdrawrecord + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.gamedog.vididin.beans.RecordCash +import com.gamedog.vididin.beans.TransactionStatus +import com.gamedog.vididin.databinding.FragmentWithdrawRecordCashItemBinding as ViewBinding + +class RecordCashRvAdapter : ListAdapter(DiffCallback()) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val binding = ViewBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(getItem(position)) + } + + inner class ViewHolder(private val binding: ViewBinding) : RecyclerView.ViewHolder(binding.root) { + fun bind(transaction: RecordCash) { + binding.tvDate.text = transaction.dateTime + binding.tvStatus.text = transaction.statusText + binding.tvDescription.text = transaction.description + binding.tvAmount.text = transaction.amount + binding.tvAmount.setTextColor(ContextCompat.getColor(binding.root.context, transaction.amountColor)) + + // 设置状态图标 + binding.tvStatusIcon.text = when (transaction.status) { + TransactionStatus.SUCCESS -> "✔" + TransactionStatus.FAILED -> "!" + TransactionStatus.PROCESSING -> "⟳" + TransactionStatus.REDEEM -> "↗" + } + } + } + + class DiffCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: RecordCash, newItem: RecordCash): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: RecordCash, newItem: RecordCash): Boolean { + return oldItem == newItem + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashViewModel.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashViewModel.kt new file mode 100644 index 0000000..3d358e0 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashViewModel.kt @@ -0,0 +1,23 @@ +package com.gamedog.vididin.features.withdrawrecord + + +import com.ama.core.architecture.appBase.vm.AppViewModel +import com.gamedog.vididin.beans.RecordCash +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import javax.inject.Inject +import com.gamedog.vididin.features.withdrawrecord.RecordCashUiState as UiState + + +@HiltViewModel +class RecordCashViewModel @Inject constructor() : AppViewModel() { + override val uiStateInitialValue: UiState = UiState() + override val uiStateFlow: Flow = flowOf() + + +} + +data class RecordCashUiState( + val mRecordList: MutableList = mutableListOf() +) \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/TransactionAdapter.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldRvAdapter.kt similarity index 67% rename from app/src/main/java/com/gamedog/vididin/features/withdrawrecord/TransactionAdapter.kt rename to app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldRvAdapter.kt index c3629b9..1fab3ac 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/TransactionAdapter.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldRvAdapter.kt @@ -6,14 +6,14 @@ import androidx.core.content.ContextCompat import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView -import com.gamedog.vididin.beans.Transaction +import com.gamedog.vididin.beans.RecordGold import com.gamedog.vididin.beans.TransactionStatus -import com.gamedog.vididin.databinding.FragmentWithdrawRecordGoldItemBinding +import com.gamedog.vididin.databinding.FragmentWithdrawRecordGoldItemBinding as ViewBinding -class TransactionAdapter : ListAdapter(DiffCallback()) { +class RecordGoldRvAdapter : ListAdapter(DiffCallback()) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val binding = FragmentWithdrawRecordGoldItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) + val binding = ViewBinding.inflate(LayoutInflater.from(parent.context), parent, false) return ViewHolder(binding) } @@ -21,8 +21,8 @@ class TransactionAdapter : ListAdapter() { - override fun areItemsTheSame(oldItem: Transaction, newItem: Transaction): Boolean { + class DiffCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: RecordGold, newItem: RecordGold): Boolean { return oldItem.id == newItem.id } - override fun areContentsTheSame(oldItem: Transaction, newItem: Transaction): Boolean { + override fun areContentsTheSame(oldItem: RecordGold, newItem: RecordGold): Boolean { return oldItem == newItem } } diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldViewModel.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldViewModel.kt new file mode 100644 index 0000000..b115eea --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordGoldViewModel.kt @@ -0,0 +1,23 @@ +package com.gamedog.vididin.features.withdrawrecord + + +import com.ama.core.architecture.appBase.vm.AppViewModel +import com.gamedog.vididin.beans.RecordGold +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import javax.inject.Inject +import com.gamedog.vididin.features.withdrawrecord.RecordGoldUiState as UiState + + +@HiltViewModel +class RecordGoldViewModel @Inject constructor() : AppViewModel() { + override val uiStateInitialValue: UiState = UiState() + override val uiStateFlow: Flow = flowOf() + + +} + +data class RecordGoldUiState( + val mRecordList: MutableList = mutableListOf() +) \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/ViewPagerAdapter.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/ViewPagerAdapter.kt index 4187031..ee6d5b1 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/ViewPagerAdapter.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/ViewPagerAdapter.kt @@ -3,7 +3,8 @@ package com.gamedog.vididin.features.withdrawrecord import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter -import com.gamedog.vididin.features.withdrawrecord.fragments.DinheiroFragment +import com.gamedog.vididin.features.withdrawrecord.fragments.CashRecordFragment +import com.gamedog.vididin.features.withdrawrecord.fragments.GoldRecordFragment class ViewPagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) { @@ -11,8 +12,8 @@ class ViewPagerAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapte override fun createFragment(position: Int): Fragment { return when (position) { - 0 -> DinheiroFragment() - 1 -> DinheiroFragment() // 创建类似的Fragment + 0 -> CashRecordFragment() + 1 -> GoldRecordFragment() else -> throw IllegalArgumentException("Invalid position: $position") } } diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/WithdrawRecordActivity.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/WithdrawRecordActivity.kt index a4f861a..d10b781 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/WithdrawRecordActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/WithdrawRecordActivity.kt @@ -8,8 +8,10 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import com.ama.core.architecture.appBase.AppViewsActivity +import com.ama.core.architecture.util.ResUtil import com.gamedog.vididin.R import com.gamedog.vididin.main.interfaces.OnTabStyleListener +import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import dagger.hilt.android.AndroidEntryPoint import kotlin.getValue @@ -62,10 +64,26 @@ class WithdrawRecordActivity : AppViewsActivity val adapter = ViewPagerAdapter(this) binding.viewPager.adapter = adapter + with (binding.tabLayout) { + addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + setTabTextColors(ResUtil.getColor(R.color.black), + ResUtil.getColor(if (selectedTabPosition == 0) R.color.green_39 else R.color.yellow_0b)) + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + } + + }) + } + TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position -> tab.text = when (position) { - 0 -> "Dinheiro" - 1 -> "Moedas" + 0 -> ResUtil.getString(R.string.record_cash_title) + 1 -> ResUtil.getString(R.string.record_gold_title) else -> null } }.attach() @@ -82,3 +100,5 @@ class WithdrawRecordActivity : AppViewsActivity + + diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/CashRecordFragment.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/CashRecordFragment.kt index 0c91887..914a876 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/CashRecordFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/CashRecordFragment.kt @@ -4,21 +4,20 @@ package com.gamedog.vididin.features.withdrawrecord.fragments import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.updatePadding import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.LinearLayoutManager import com.ama.core.architecture.appBase.AppViewsFragment import com.ama.core.architecture.appBase.OnFragmentBackgroundListener -import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.util.setStatusBarDarkFont -import com.ama.core.common.util.dp -import com.gamedog.vididin.router.Router +import com.gamedog.vididin.R +import com.gamedog.vididin.beans.RecordCash +import com.gamedog.vididin.beans.TransactionStatus +import com.gamedog.vididin.features.withdrawrecord.RecordCashRvAdapter import dagger.hilt.android.AndroidEntryPoint import kotlin.getValue -import com.gamedog.vididin.databinding.VididinappFeatureMineFragmentMineBinding as ViewBinding -import com.gamedog.vididin.main.fragments.mine.MineUiState as UiState -import com.gamedog.vididin.main.fragments.mine.MineViewModel as ViewModel +import com.gamedog.vididin.databinding.FragmentWithdrawRecordCashBinding as ViewBinding +import com.gamedog.vididin.features.withdrawrecord.RecordCashUiState as UiState +import com.gamedog.vididin.features.withdrawrecord.RecordCashViewModel as ViewModel @@ -26,6 +25,7 @@ import com.gamedog.vididin.main.fragments.mine.MineViewModel as ViewModel @AndroidEntryPoint class CashRecordFragment : AppViewsFragment(), OnFragmentBackgroundListener { + private lateinit var mAdapter: RecordCashRvAdapter override val mViewModel: ViewModel by viewModels() override var isBackgroundBright: Boolean = true @@ -39,42 +39,22 @@ class CashRecordFragment : AppViewsFragment(), ) = ViewBinding.inflate(inflater, container, false) override fun ViewBinding.initWindowInsets() { - ViewCompat.setOnApplyWindowInsetsListener(topBackground) { v, insets -> - val systemBars = - insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()) - v.updatePadding(top = systemBars.top + 20.dp) - insets - } + binding?.root?.let { setImmerseRootView(it) } } override fun ViewBinding.initViews() { - setOnClickBatch(rlPrivacy, rlVersion, rlFeedback) { - when (this) { - rlPrivacy -> { - Router.Privacy.startActivity(requireActivity()) - } - rlVersion -> { - Router.Version.startActivity(requireActivity()) - } - rlFeedback -> { - Router.Feedback.startActivity(requireActivity()) - } - } - } + setupRecyclerView() } override fun ViewBinding.initListeners() { - nestedScrollView.setOnScrollChangeListener { _, _, scrollY, _, _ -> - isStatusBarDarkFont = scrollY > topBackground.height - setStatusBarDarkFont(isStatusBarDarkFont) - } + } override fun ViewBinding.initObservers() { } override fun ViewBinding.onUiStateCollect(uiState: UiState) { - //dynamicColorsSwitch.isChecked = uiState.useDynamicColor + } override fun onResume() { @@ -82,6 +62,55 @@ class CashRecordFragment : AppViewsFragment(), setStatusBarDarkFont(isDarkFont = isStatusBarDarkFont) } + + private fun setupRecyclerView() { + mAdapter = RecordCashRvAdapter() + binding?.recyclerView?.adapter = mAdapter + binding?.recyclerView?.layoutManager = LinearLayoutManager(requireContext()) + + // 模拟数据 + val transactions = listOf( + RecordCash( + id = 1, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.SUCCESS, + statusText = "Sucesso", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 0,1", + amountColor = R.color.red_11 + ), + RecordCash( + id = 2, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.FAILED, + statusText = "Falhou", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 0,0", + amountColor = R.color.red_11 + ), + RecordCash( + id = 3, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.PROCESSING, + statusText = "Em processamento...", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 10,0", + amountColor = R.color.red_11 + ), + RecordCash( + id = 4, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.REDEEM, + statusText = "Resgatar", + description = "Você resgatou 4980 moedas", + amount = "+R$ 10,0", + amountColor = R.color.green_39 + ) + ) + + mAdapter.submitList(transactions) + } + companion object { internal fun newInstance() = CashRecordFragment() } diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/DinheiroFragment.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/DinheiroFragment.kt deleted file mode 100644 index 7f1aa88..0000000 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/DinheiroFragment.kt +++ /dev/null @@ -1,77 +0,0 @@ -package com.gamedog.vididin.features.withdrawrecord.fragments - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.recyclerview.widget.LinearLayoutManager -import com.gamedog.vididin.R -import com.gamedog.vididin.beans.Transaction -import com.gamedog.vididin.beans.TransactionStatus -import com.gamedog.vididin.databinding.FragmentWithdrawRecordCashBinding -import com.gamedog.vididin.features.withdrawrecord.TransactionAdapter - -class DinheiroFragment : Fragment() { - - private lateinit var binding: FragmentWithdrawRecordCashBinding - private lateinit var adapter: TransactionAdapter - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - binding = FragmentWithdrawRecordCashBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupRecyclerView() - } - - private fun setupRecyclerView() { - adapter = TransactionAdapter() - binding.recyclerView.adapter = adapter - binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) - - // 模拟数据 - 根据您的截图 - val transactions = listOf( - Transaction( - id = 1, - dateTime = "2025/10/31 17:30", - status = TransactionStatus.SUCCESS, - statusText = "Sucesso", - description = "Você solicitou o saque com sucesso!", - amount = "-R$ 0,1", - amountColor = R.color.red_11 - ), - Transaction( - id = 2, - dateTime = "2025/10/31 17:30", - status = TransactionStatus.FAILED, - statusText = "Falhou", - description = "Você solicitou o saque com sucesso!", - amount = "-R$ 0,0", - amountColor = R.color.red_11 - ), - Transaction( - id = 3, - dateTime = "2025/10/31 17:30", - status = TransactionStatus.PROCESSING, - statusText = "Em processamento...", - description = "Você solicitou o saque com sucesso!", - amount = "-R$ 10,0", - amountColor = R.color.red_11 - ), - Transaction( - id = 4, - dateTime = "2025/10/31 17:30", - status = TransactionStatus.REDEEM, - statusText = "Resgatar", - description = "Você resgatou 4980 moedas", - amount = "+R$ 10,0", - amountColor = R.color.green_39 - ) - ) - - adapter.submitList(transactions) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/GoldRecordFragment.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/GoldRecordFragment.kt index 5043a63..20e64c1 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/GoldRecordFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/fragments/GoldRecordFragment.kt @@ -4,21 +4,21 @@ package com.gamedog.vididin.features.withdrawrecord.fragments import android.view.LayoutInflater import android.view.ViewGroup -import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.updatePadding import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.LinearLayoutManager import com.ama.core.architecture.appBase.AppViewsFragment import com.ama.core.architecture.appBase.OnFragmentBackgroundListener -import com.ama.core.architecture.util.setOnClickBatch import com.ama.core.architecture.util.setStatusBarDarkFont -import com.ama.core.common.util.dp -import com.gamedog.vididin.router.Router +import com.gamedog.vididin.R +import com.gamedog.vididin.beans.RecordGold +import com.gamedog.vididin.beans.TransactionStatus +import com.gamedog.vididin.features.withdrawrecord.RecordCashRvAdapter +import com.gamedog.vididin.features.withdrawrecord.RecordGoldRvAdapter import dagger.hilt.android.AndroidEntryPoint import kotlin.getValue -import com.gamedog.vididin.databinding.VididinappFeatureMineFragmentMineBinding as ViewBinding -import com.gamedog.vididin.main.fragments.mine.MineUiState as UiState -import com.gamedog.vididin.main.fragments.mine.MineViewModel as ViewModel +import com.gamedog.vididin.databinding.FragmentWithdrawRecordGoldBinding as ViewBinding +import com.gamedog.vididin.features.withdrawrecord.RecordGoldUiState as UiState +import com.gamedog.vididin.features.withdrawrecord.RecordGoldViewModel as ViewModel @@ -26,6 +26,7 @@ import com.gamedog.vididin.main.fragments.mine.MineViewModel as ViewModel @AndroidEntryPoint class GoldRecordFragment : AppViewsFragment(), OnFragmentBackgroundListener { + private lateinit var mAdapter: RecordGoldRvAdapter override val mViewModel: ViewModel by viewModels() override var isBackgroundBright: Boolean = true @@ -39,42 +40,22 @@ class GoldRecordFragment : AppViewsFragment(), ) = ViewBinding.inflate(inflater, container, false) override fun ViewBinding.initWindowInsets() { - ViewCompat.setOnApplyWindowInsetsListener(topBackground) { v, insets -> - val systemBars = - insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()) - v.updatePadding(top = systemBars.top + 20.dp) - insets - } + binding?.root?.let { setImmerseRootView(it) } } override fun ViewBinding.initViews() { - setOnClickBatch(rlPrivacy, rlVersion, rlFeedback) { - when (this) { - rlPrivacy -> { - Router.Privacy.startActivity(requireActivity()) - } - rlVersion -> { - Router.Version.startActivity(requireActivity()) - } - rlFeedback -> { - Router.Feedback.startActivity(requireActivity()) - } - } - } + setupRecyclerView() } override fun ViewBinding.initListeners() { - nestedScrollView.setOnScrollChangeListener { _, _, scrollY, _, _ -> - isStatusBarDarkFont = scrollY > topBackground.height - setStatusBarDarkFont(isStatusBarDarkFont) - } + } override fun ViewBinding.initObservers() { } override fun ViewBinding.onUiStateCollect(uiState: UiState) { - //dynamicColorsSwitch.isChecked = uiState.useDynamicColor + } override fun onResume() { @@ -82,7 +63,56 @@ class GoldRecordFragment : AppViewsFragment(), setStatusBarDarkFont(isDarkFont = isStatusBarDarkFont) } + + private fun setupRecyclerView() { + mAdapter = RecordGoldRvAdapter() + binding?.recyclerView?.adapter = mAdapter + binding?.recyclerView?.layoutManager = LinearLayoutManager(requireContext()) + + // 模拟数据 + val transactions = listOf( + RecordGold( + id = 1, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.SUCCESS, + statusText = "Sucesso", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 0,1", + amountColor = R.color.red_11 + ), + RecordGold( + id = 2, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.FAILED, + statusText = "Falhou", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 0,0", + amountColor = R.color.red_11 + ), + RecordGold( + id = 3, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.PROCESSING, + statusText = "Em processamento...", + description = "Você solicitou o saque com sucesso!", + amount = "-R$ 10,0", + amountColor = R.color.red_11 + ), + RecordGold( + id = 4, + dateTime = "2025/10/31 17:30", + status = TransactionStatus.REDEEM, + statusText = "Resgatar", + description = "Você resgatou 4980 moedas", + amount = "+R$ 10,0", + amountColor = R.color.green_39 + ) + ) + + mAdapter.submitList(transactions) + } + companion object { - internal fun newInstance() = GoldRecordFragment() + internal fun newInstance() = CashRecordFragment() } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_record_tab_cash.xml b/app/src/main/res/drawable/bg_record_tab_cash.xml new file mode 100644 index 0000000..ebd7d35 --- /dev/null +++ b/app/src/main/res/drawable/bg_record_tab_cash.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_record_tab_gold.xml b/app/src/main/res/drawable/bg_record_tab_gold.xml new file mode 100644 index 0000000..d2361ec --- /dev/null +++ b/app/src/main/res/drawable/bg_record_tab_gold.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_withdraw_record.xml b/app/src/main/res/layout/activity_withdraw_record.xml index 41ebb4c..03eddb5 100644 --- a/app/src/main/res/layout/activity_withdraw_record.xml +++ b/app/src/main/res/layout/activity_withdraw_record.xml @@ -28,7 +28,6 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:layout_marginStart="20dp" app:tabTextColor="@color/black" app:tabSelectedTextColor="@color/green_39" app:tabIndicatorColor="@color/transparent" @@ -37,6 +36,7 @@ app:tabBackground="@color/transparent" app:tabRippleColor="@null" app:tabMode="fixed" + android:background="@color/transparent" > + android:orientation="vertical" > - + android:background="@drawable/bg_record_tab_cash" + android:paddingHorizontal="10dp" + android:paddingVertical="15dp" + android:gravity="center_vertical" + android:layout_marginHorizontal="15dp" + > + + + + + + + + + android:layout_height="match_parent" + android:layout_marginHorizontal="15dp" + android:layout_marginTop="20dp"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_withdraw_record_gold.xml b/app/src/main/res/layout/fragment_withdraw_record_gold.xml index 5b91fd5..830757d 100644 --- a/app/src/main/res/layout/fragment_withdraw_record_gold.xml +++ b/app/src/main/res/layout/fragment_withdraw_record_gold.xml @@ -2,20 +2,49 @@ + android:orientation="vertical" > - + android:background="@drawable/bg_record_tab_gold" + android:paddingHorizontal="10dp" + android:paddingVertical="15dp" + android:gravity="center_vertical" + android:layout_marginHorizontal="15dp" + > + + + + + + + + + android:layout_height="match_parent" + android:layout_marginHorizontal="15dp" + android:layout_marginTop="20dp"/> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index af2b7a0..09eacbc 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -95,5 +95,6 @@ #FF92521B #FFFF2828 #FFFF9C7C + #FFFF740B \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 45b4cec..3676270 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,5 +115,8 @@ Quase 4 milhões de pessoas na jogada! Regras para Ganhar: + Dinheiro + Moedas + Total sacado até o momento: \ No newline at end of file