From a2a458e6d97799f3fa48c551f4d77b72bb019b1b Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 21 Jan 2026 16:01:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=8F=90=E7=8E=B0=E3=80=91=E7=9B=AE?= =?UTF-8?q?=E5=89=8D=E6=8F=90=E7=8E=B0=E5=85=AC=E5=BC=8F=E4=B8=AD=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E5=B9=BF=E5=91=8A=E4=BB=B7=E5=80=BC=E6=B2=A1=E6=9C=89?= =?UTF-8?q?*5=20=E5=AF=BC=E8=87=B4=E7=9C=8B=E4=B8=80=E4=B8=AA=E5=B9=BF?= =?UTF-8?q?=E5=91=8A=E8=BF=9B=E5=BA=A6=E4=B8=8D=E4=BC=9A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=EF=BC=8C=E9=BA=BB=E7=83=A6=E7=A1=AE=E5=AE=9A=E4=B8=8B=E8=AE=BE?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gamedog/vididin/VidiConst.kt | 2 +- .../features/withdraw/WithDrawSubActivity.kt | 2 +- .../vididin/manager/WithdrawManager.kt | 14 +- .../main/res/layout/activity_withdraw_sub.xml | 2 +- .../widget/CustomProgressBarFloat.kt | 122 ++++++++++++++++++ 5 files changed, 132 insertions(+), 10 deletions(-) create mode 100644 core/architecture/src/main/java/com/ama/core/architecture/widget/CustomProgressBarFloat.kt diff --git a/app/src/main/java/com/gamedog/vididin/VidiConst.kt b/app/src/main/java/com/gamedog/vididin/VidiConst.kt index 096ec85..3151321 100644 --- a/app/src/main/java/com/gamedog/vididin/VidiConst.kt +++ b/app/src/main/java/com/gamedog/vididin/VidiConst.kt @@ -94,7 +94,7 @@ object VidiConst { const val DIAMOND_NUM_FOR_ONE_AD = 1 const val WITHDRAW_SMALL_NUM = 0.1F - const val WITHDRAW_REWARD_AD_REVENUE_PERCENT = 0.3 + const val WITHDRAW_REWARD_AD_REVENUE_PERCENT = 1.0 diff --git a/app/src/main/java/com/gamedog/vididin/features/withdraw/WithDrawSubActivity.kt b/app/src/main/java/com/gamedog/vididin/features/withdraw/WithDrawSubActivity.kt index 88cd26c..5c91600 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdraw/WithDrawSubActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdraw/WithDrawSubActivity.kt @@ -217,7 +217,7 @@ class WithDrawSubActivity : AppViewsEmptyViewModelActivity() { val subBean = mCurItem.subItemList[mSelectingIndex] val curProgress = subBean.currentAdProgress progressBar.setProgress(curProgress) - tvProgress.text = "$curProgress%" + tvProgress.text = "${"%.2f".format(curProgress) }%" ivAction.isVisible = curProgress < 100 if (curProgress < 100) { diff --git a/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt b/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt index 379ac4d..c0942bd 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/WithdrawManager.kt @@ -131,14 +131,14 @@ class WithdrawManager private constructor() { for (i in 0..subItemCount-1) { val initProgress = AndroidUtil.randomInt(50, 70) - subItemList.add(WithdrawSubItem(i, EACH_SUB_ITEM_CASH_NUM, initProgress, initProgress, 0.0)) + subItemList.add(WithdrawSubItem(i, EACH_SUB_ITEM_CASH_NUM, initProgress, initProgress.toFloat(), 0.0)) } return subItemList } private fun generateSmallItemList(): List { val subItemList = mutableListOf() - subItemList.add(WithdrawSubItem(0, 0.1, 100, 100, 0.1)) + subItemList.add(WithdrawSubItem(0, 0.1, 100, 100F, 0.1)) return subItemList } @@ -194,14 +194,14 @@ class WithdrawManager private constructor() { private fun calculateSubBeanProgress(subBean: WithdrawSubItem) { val needEarnProgress = 100 - subBean.startAdProgress if (subBean.hasEarnMoneyByAd >= subBean.cashTotal) { - subBean.currentAdProgress = 100 + subBean.currentAdProgress = 100F // update state if (subBean.withdrawState == STATE_NEED_WATCH_AD) { subBean.withdrawState = STATE_COULD_WITHDRAW } } else { - val newProgress = subBean.startAdProgress + (needEarnProgress * (subBean.hasEarnMoneyByAd / subBean.cashTotal)).toInt() - subBean.currentAdProgress = if (newProgress >= 100) 100 else newProgress + val newProgress = subBean.startAdProgress + (needEarnProgress * (subBean.hasEarnMoneyByAd / subBean.cashTotal)).toFloat() + subBean.currentAdProgress = if (newProgress >= 100F) 100F else newProgress } } @@ -257,7 +257,7 @@ class WithdrawManager private constructor() { subItemList.forEach { subItem -> subItem.apply { - currentAdProgress = startAdProgress + currentAdProgress = startAdProgress.toFloat() hasEarnMoneyByAd = 0.0 withdrawState = STATE_NEED_WATCH_AD } @@ -739,7 +739,7 @@ data class WithdrawSubItem( val dayIndex: Int, val cashTotal: Double, val startAdProgress: Int = 0, - var currentAdProgress: Int = 0, + var currentAdProgress: Float = 0F, var hasEarnMoneyByAd: Double = 0.0, var withdrawState: Int = STATE_NEED_WATCH_AD, ) \ No newline at end of file diff --git a/app/src/main/res/layout/activity_withdraw_sub.xml b/app/src/main/res/layout/activity_withdraw_sub.xml index 5eb7eae..037c0fc 100644 --- a/app/src/main/res/layout/activity_withdraw_sub.xml +++ b/app/src/main/res/layout/activity_withdraw_sub.xml @@ -119,7 +119,7 @@ android:layout_height="13dp" android:layout_marginHorizontal="20dp" android:layout_marginTop="10dp"> - 0) { + paint.color = mForColor + canvas.drawRoundRect(0f, 0f, completeProgressWidth, height, height/2, height/2, paint) + } + } + } + + + fun setProgress(progress: Float) { + this.progress = if (progress > 100F) 100F else progress + invalidate() + } + + + + fun enableTouch(enableTouch: Boolean) { + mEnableTouch = enableTouch + } + + fun setBarColor(bgColor: Int=R.color.gray_d3, forColor: Int=R.color.green_09) { + mBgColor = ResUtil.getColor(bgColor) + mForColor = ResUtil.getColor(forColor) + invalidate() + } + + + + + + //--------------------------- New added ---------------------------- + private var onProgressChangeListener: OnProgressChangeListener? = null + + override fun onTouchEvent(event: MotionEvent): Boolean { + if (mEnableTouch) { + when (event.action) { + MotionEvent.ACTION_DOWN -> { + parent.requestDisallowInterceptTouchEvent(true) + updateProgressFromTouch(event.x) + return true + } + MotionEvent.ACTION_MOVE -> { + updateProgressFromTouch(event.x) + return true + } + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + parent.requestDisallowInterceptTouchEvent(false) + updateProgressFromTouch(event.x, true) + return true + } + } + } + + return super.onTouchEvent(event) + } + + private fun updateProgressFromTouch(touchX: Float, notifyNewProgress: Boolean = false) { + val width = width.toFloat() + if (width > 0) { + var newProgress = (touchX / width * max) + newProgress = if (newProgress > 100F) 100F else progress + + if (Math.abs(newProgress - progress) > 0.0001F) { + setProgress(newProgress) + + if (notifyNewProgress) { + onProgressChangeListener?.onProgressChanged(newProgress) + } + } + } + } + + fun setOnProgressChangeListener(listener: OnProgressChangeListener) { + this.onProgressChangeListener = listener + } + + interface OnProgressChangeListener { + fun onProgressChanged(progress: Float) + } + + +} + + +