Updated on 2026-08-14

This commit is contained in:
Tangem 2022-05-19 22:58:34 +03:00
parent 7f4854eee3
commit a00215b129
2 changed files with 26 additions and 50 deletions

View file

@ -1,7 +1,5 @@
package com.tangem.tap.common.extensions
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.app.Activity
import android.content.*
import android.content.res.Resources
@ -192,45 +190,27 @@ fun View.getString(resId: Int, vararg formatArgs: Any?): String {
return context.getString(resId, formatArgs)
}
fun View.showAnimated(durationMillis: Long = 300) {
this.animateVisibility(
show = true,
durationMillis = durationMillis
)
}
fun View.hideAnimated(
durationMillis: Long = 300,
hiddenVisibility: Int = View.GONE
) {
this.animateVisibility(
show = false,
durationMillis = durationMillis,
hiddenVisibility = hiddenVisibility
)
}
private fun View.animateVisibility(
fun View.animateVisibility(
show: Boolean,
durationMillis: Long = 300,
durationMillis: Long = SHORT_ANIMATION_DURATION,
hiddenVisibility: Int = View.GONE
) {
if (this.isVisible == show) return
if (show) {
this.alpha = 0f
this.isVisible = true
this.animate()
.alpha(1f)
.setDuration(durationMillis)
.setListener(null)
.withStartAction {
this.alpha = 0f
this.isVisible = true
}
} else {
this.animate()
.alpha(0f)
.setDuration(durationMillis)
.setListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
this@animateVisibility.visibility = hiddenVisibility
}
})
.withStartAction {
this.visibility = hiddenVisibility
}
}
}
}
private const val SHORT_ANIMATION_DURATION = 80L

View file

@ -6,7 +6,10 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.tangem.common.card.Card
import com.tangem.domain.common.TapWorkarounds.derivationStyle
import com.tangem.domain.common.TapWorkarounds.isTestCard
import com.tangem.tap.common.extensions.*
import com.tangem.tap.common.extensions.animateVisibility
import com.tangem.tap.common.extensions.formatAmountAsSpannedString
import com.tangem.tap.common.extensions.hide
import com.tangem.tap.common.extensions.show
import com.tangem.tap.common.redux.StateDialog
import com.tangem.tap.common.redux.navigation.AppScreen
import com.tangem.tap.common.redux.navigation.NavigationAction
@ -134,23 +137,16 @@ class MultiWalletView : WalletView {
binding: FragmentWalletBinding,
totalBalance: TotalBalance,
) = with(binding.lCardTotalBalance) {
when (totalBalance.state) {
TotalBalance.State.Loading -> {
pbLoading.showAnimated()
tvBalance.hideAnimated(hiddenVisibility = View.INVISIBLE)
tvProcessing.hideAnimated()
}
TotalBalance.State.SomeTokensFailed -> {
tvBalance.showAnimated()
pbLoading.hideAnimated()
tvProcessing.showAnimated()
}
TotalBalance.State.Success -> {
tvBalance.showAnimated()
pbLoading.hideAnimated()
tvProcessing.hideAnimated()
}
}
tvBalance.animateVisibility(
show = totalBalance.state != TotalBalance.State.Loading,
hiddenVisibility = View.INVISIBLE
)
pbLoading.animateVisibility(
show = totalBalance.state == TotalBalance.State.Loading
)
tvProcessing.animateVisibility(
show = totalBalance.state == TotalBalance.State.SomeTokensFailed
)
tvBalance.text = totalBalance.fiatAmount.formatAmountAsSpannedString(
currencySymbol = totalBalance.fiatCurrency.symbol