From a00215b12910e87d67be87bd793645a46a37d324 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 19 May 2022 22:58:34 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/common/extensions/UI.kt | 44 +++++-------------- .../wallet/ui/wallet/MultiWalletView.kt | 32 ++++++-------- 2 files changed, 26 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/extensions/UI.kt b/app/src/main/java/com/tangem/tap/common/extensions/UI.kt index 4e4ec7260a..8c2184ae50 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/UI.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/UI.kt @@ -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 + } } -} \ No newline at end of file +} + +private const val SHORT_ANIMATION_DURATION = 80L \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt index 63be6cb214..271f6bb67b 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/wallet/MultiWalletView.kt @@ -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