guide in 提现 和 0元购

This commit is contained in:
renhaoting 2025-12-16 17:33:12 +08:00
parent c1070ab095
commit 90dbd265f0
7 changed files with 157 additions and 9 deletions

View File

@ -4,10 +4,18 @@ import android.app.Activity
import android.content.Intent
import android.view.LayoutInflater
import androidx.activity.viewModels
import androidx.core.graphics.toColorInt
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.ama.core.architecture.appBase.AppViewsEmptyViewModelActivity
import com.ama.core.architecture.highlightpro.HighlightPro
import com.ama.core.architecture.highlightpro.parameter.Constraints
import com.ama.core.architecture.highlightpro.parameter.HighlightParameter
import com.ama.core.architecture.highlightpro.parameter.MarginOffset
import com.ama.core.architecture.highlightpro.shape.RectShape
import com.ama.core.architecture.util.ResUtil.dp
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.setOnClickBatch
import com.gamedog.vididin.VidiConst
import com.vididin.real.money.game.R
@ -21,7 +29,6 @@ import com.gamedog.vididin.features.withdraw.dialogs.WithdrawInfoConfirmDialog
import com.gamedog.vididin.features.withdraw.dialogs.WithdrawSuccessDialog
import com.gamedog.vididin.features.withdraw.widget.WithDrawItemView
import com.gamedog.vididin.manager.WithdrawManager
import com.gamedog.vididin.manager.WithdrawManager.Companion.FAIL_TYPE_APP_VERSION_LOW
import com.gamedog.vididin.manager.WithdrawManager.Companion.TRANSACTION_STATE_FAIL
import com.gamedog.vididin.manager.WithdrawManager.Companion.TRANSACTION_STATE_ONGOING
import com.gamedog.vididin.manager.WithdrawManager.Companion.TRANSACTION_STATE_SUCCESS
@ -152,6 +159,12 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
VididinEvents.EVENT_WITHDRAW_CHECK_RESULT_UPDATED,)
readTransactionsAndShowResult()
if (needShowGuide()) {
binding.tvCashTotal.postDelayed({
showGuide()
}, 5)
}
}
@ -307,6 +320,40 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
WithdrawManager.instance().saveNewRecord(newRecord)
}
private fun needShowGuide(): Boolean {
return SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW) < 5
}
private fun saveGuideState() {
return SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 4)
}
private fun showGuide() {
HighlightPro.with(this@WithDrawActivity)
.setHighlightParameter {
HighlightParameter.Builder()
.setHighlightView(mItemViewList.get(0), {
})
.setTipsViewId(R.layout.guide_step_withdraw)
.setHighlightShape(RectShape(10.dp, 10.dp, 10.dp))
.setHighlightHorizontalPadding(0.dp)
.setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
.setMarginOffset(MarginOffset(top = -20.dp.toInt()))
.build()
}
.setBackgroundColor("#cc000000".toColorInt())
.setOnShowCallback { index ->
}
.setOnDismissCallback {
saveGuideState()
handleGotoWithdraw(0)
}
.interceptBackPressed(true)
.show()
}
companion object {

View File

@ -17,6 +17,7 @@ import androidx.activity.viewModels
import com.ama.core.architecture.appBase.AppViewsActivity
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
import com.ama.core.architecture.ext.toast
import com.ama.core.architecture.util.SpUtil
import com.ama.core.architecture.util.bindViewPager2
import com.ama.core.architecture.util.setCommonNavigator
import com.ama.core.architecture.util.setDataOrAdapter
@ -77,7 +78,9 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
viewPager2.offscreenPageLimit
BeginnerGiftDialog(this@MainActivity).show()
if (SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW) < 5) {
BeginnerGiftDialog(this@MainActivity).show()
}
}
override fun ViewBinding.initListeners() {

View File

@ -4,7 +4,6 @@ import android.Manifest
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import androidx.core.graphics.toColorInt
import androidx.core.view.ViewCompat
@ -40,7 +39,9 @@ import com.ama.core.architecture.highlightpro.HighlightPro
import com.ama.core.architecture.highlightpro.parameter.Constraints
import com.ama.core.architecture.highlightpro.parameter.HighlightParameter
import com.ama.core.architecture.highlightpro.parameter.MarginOffset
import com.ama.core.architecture.highlightpro.shape.OvalShape
import com.ama.core.architecture.highlightpro.shape.RectShape
import com.ama.core.architecture.util.SpUtil
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Runnable
import kotlinx.coroutines.launch
@ -100,7 +101,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}
llTaskZerobuy->{
Router.ZeroBuy.startActivity(requireActivity())
gotoZeroBuy()
}
tvWatchVideoForConvertGoldToCash->{
@ -145,9 +146,15 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
mTaskConfig = TaskManager.instance().getTaskConfig()
}
binding?.llTaskGame?.postDelayed({
showGuide()
}, 50)
if (needShowZerobuyGuide() < 5) {
binding?.llTaskGame?.postDelayed({
showGuide1()
}, 5)
}
}
private fun gotoZeroBuy() {
Router.ZeroBuy.startActivity(requireActivity())
}
private fun addDailySubTasks() {
@ -280,7 +287,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
VididinEvents.Event_Account_Gold_Changed, VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED,
VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, VididinEvents.EVENT_JUMP_2_FIRST_WITHDRAW,
VididinEvents.EVENT_NEWBIE_DISCORD_TASK_CHANGED, VididinEvents.EVENT_NEWBIE_NOTIFY_TASK_CHANGED,
VididinEvents.EVENT_NEWBIE_FIRST_WITHDRAW_TASK_CHANGED,)
VididinEvents.EVENT_NEWBIE_FIRST_WITHDRAW_TASK_CHANGED)
}
private fun scroll2FirstWithdraw() {
@ -364,6 +371,18 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
override fun onResume() {
super.onResume()
setStatusBarDarkFont(isDarkFont = isBackgroundBright)
if (needShowZerobuyGuide() == 4) {
showGuide2()
}
}
private fun needShowZerobuyGuide(): Int {
return SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW)
}
private fun saveGuideDoneFlag() {
SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 5)
}
override fun onTabClickAgain() {
@ -434,7 +453,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}
private fun showGuide() {
private fun showGuide1() {
HighlightPro.with(this@TasksFragment)
.setHighlightParameter {
HighlightParameter.Builder()
@ -473,4 +492,31 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}
private fun showGuide2() {
HighlightPro.with(this@TasksFragment)
.setHighlightParameter {
HighlightParameter.Builder()
.setHighlightView(binding!!.llTaskZerobuy, {
val temp = 111
})
.setTipsViewId(R.layout.guide_step_zerobuy)
.setHighlightShape(OvalShape(37.dp))
.setHighlightHorizontalPadding(0.dp)
.setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
.setMarginOffset(MarginOffset(top = -20.dp.toInt(), end = -10.dp.toInt()))
.build()
}
.setBackgroundColor("#cc000000".toColorInt())
.setOnShowCallback { index ->
}
.setOnDismissCallback {
saveGuideDoneFlag()
gotoZeroBuy()
}
.interceptBackPressed(true)
.show()
}
}

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:layout_marginLeft="100dp"
android:layout_height="70dp"
android:src="@mipmap/guide_finger_b" />
</FrameLayout>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/tv_tips"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:layout_marginLeft="100dp"
android:layout_height="70dp"
android:src="@mipmap/guide_finger_b" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="70dp"
android:padding="15dp"
android:background="@mipmap/guide_bg_right">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:gravity="center"
android:textSize="16sp"
android:textColor="@color/gray3"
android:textStyle="bold"
android:text="@string/guide_hint_zero"
/>
</FrameLayout>
</FrameLayout>

View File

@ -151,5 +151,6 @@
<string name="pix2_hint">Vincular conta para saque</string>
<string name="guide_hint_gold">Clique no botão para converter todas \nas “Moedas” em “Dinheiro”.</string>
<string name="guide_hint_cash">Clique aqui para ir para o saque.</string>
<string name="guide_hint_zero">Montes de recompensas em dinheiro \nte aguardam. Boa sorte!</string>
</resources>

View File

@ -39,6 +39,9 @@ class SpUtil private constructor(spFileName: String) {
const val KEY_WITHDRAW_ITEM_LIST = "KEY_WITHDRAW_ITEM_LIST"
const val KEY_GUIDE_HAS_SHOW = "KEY_GUIDE_STATE" // 1,2,3,4,5 5 stands for finish
@Volatile