diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt index c76ccbf..4ca7a84 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/activity/MainActivity.kt @@ -38,7 +38,7 @@ class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - synchronizer.start(this) + if(!DEV_MODE)synchronizer.start(this) } override fun onDestroy() { @@ -54,6 +54,11 @@ class MainActivity : BaseActivity() { } } + override fun onResume() { + super.onResume() + if(DEV_MODE) navController.navigate(R.id.nav_send_fragment) + } + /** * Let the navController override the default behavior when the drawer icon or back arrow are clicked. This * automatically takes care of the drawer toggle behavior. Note that without overriding this method, the up/drawer @@ -85,6 +90,12 @@ class MainActivity : BaseActivity() { } companion object { + /** + * A simple flag that helps with removing shortcuts in the code used during development. + * TODO: either elevate this to a real thing (based off a system property or some such) or delete it! + */ + const val DEV_MODE = true + // TODO: placeholder until we have a network service for this const val USD_PER_ZEC = 49.07 init { diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt index 0a04d2f..c60a3ba 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/HomeFragment.kt @@ -1,5 +1,6 @@ package cash.z.android.wallet.ui.fragment +import android.animation.Animator import android.app.Activity import android.os.Bundle import android.text.SpannableString @@ -8,6 +9,8 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.AccelerateDecelerateInterpolator +import android.view.animation.AccelerateInterpolator import androidx.annotation.ColorRes import androidx.annotation.DrawableRes import androidx.annotation.IdRes @@ -55,32 +58,37 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView { savedInstanceState: Bundle? ): View? { viewsInitialized = false - val enterTransitionSet = TransitionInflater.from(mainActivity).inflateTransition(R.transition.transition_zec_sent).apply { - duration = 350L - }.addListener(object : Transition.TransitionListener { - override fun onTransitionEnd(transition: Transition) { - // fixes a bug where the translation gets lost, during animation. As a nice side effect, visually, it makes the view appear to settle in to position - header_active_transaction.translationZ = 10.0f - } + setupSharedElementTransitions() - override fun onTransitionResume(transition: Transition) { - } + return inflater.inflate(R.layout.fragment_home, container, false) + } - override fun onTransitionPause(transition: Transition) { - } + private fun setupSharedElementTransitions() { + val enterTransitionSet = + TransitionInflater.from(mainActivity).inflateTransition(R.transition.transition_zec_sent).apply { + duration = 300L + }.addListener(object : Transition.TransitionListener { + override fun onTransitionEnd(transition: Transition) { + // fixes a bug where the translation gets lost, during animation. As a nice side effect, visually, it makes the view appear to settle in to position + header_active_transaction.translationZ = 10.0f + } - override fun onTransitionCancel(transition: Transition) { - } + override fun onTransitionResume(transition: Transition) { + } - override fun onTransitionStart(transition: Transition) { - } + override fun onTransitionPause(transition: Transition) { + } - }) + override fun onTransitionCancel(transition: Transition) { + } + + override fun onTransitionStart(transition: Transition) { + } + + }) this.sharedElementEnterTransition = enterTransitionSet this.sharedElementReturnTransition = enterTransitionSet - - return inflater.inflate(R.layout.fragment_home, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -90,7 +98,6 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView { mainActivity.setupNavigation() mainActivity.supportActionBar?.setTitle(R.string.destination_title_home) } - header_active_transaction.isActivated = true headerFullViews = arrayOf(text_balance_usd, text_balance_includes_info, text_balance_zec, image_zec_symbol_balance_shadow, image_zec_symbol_balance) headerEmptyViews = arrayOf(text_balance_zec_info, text_balance_zec_empty, image_zec_symbol_balance_shadow_empty, image_zec_symbol_balance_empty) @@ -100,10 +107,13 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView { group_empty_view_items.visibility = View.GONE group_full_view_items.visibility = View.GONE - image_logo.setOnClickListener { -// forceRedraw() -// toggleViews(false) - header_active_transaction.isActivated = !header_active_transaction.isActivated + if (MainActivity.DEV_MODE) { + image_logo.setOnClickListener { + mainActivity.navController.navigate(R.id.nav_send_fragment) + // forceRedraw() + // toggleViews(false) + + } } button_active_transaction_cancel.setOnClickListener { @@ -258,7 +268,27 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView { private fun onCancelActiveTransaction() { button_active_transaction_cancel.isEnabled = false button_active_transaction_cancel.text = "canceled" - header_active_transaction.isActivated = false + header_active_transaction.animate().apply { + translationZ(0f) + duration = 200L + interpolator = AccelerateInterpolator() + setListener(object : Animator.AnimatorListener { + override fun onAnimationRepeat(animation: Animator?) { + } + + override fun onAnimationEnd(animation: Animator?) { + header_active_transaction.setBackgroundResource(0) + } + + override fun onAnimationCancel(animation: Animator?) { + } + + override fun onAnimationStart(animation: Animator?) { + } + + } ) + } + homePresenter.onCancelActiveTransaction() } diff --git a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SendFragment.kt b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SendFragment.kt index 586d9a1..1e5a6be 100644 --- a/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SendFragment.kt +++ b/zcash-android-wallet-app/app/src/main/java/cash/z/android/wallet/ui/fragment/SendFragment.kt @@ -11,6 +11,9 @@ import android.view.ViewGroup import androidx.core.text.toSpannable import androidx.databinding.DataBindingUtil import androidx.navigation.fragment.FragmentNavigatorExtras +import androidx.transition.Fade +import androidx.transition.Transition +import androidx.transition.TransitionInflater import cash.z.android.wallet.R import cash.z.android.wallet.databinding.FragmentSendBinding import cash.z.android.wallet.extention.afterTextChanged @@ -20,6 +23,7 @@ import cash.z.android.wallet.ui.activity.MainActivity import cash.z.android.wallet.ui.presenter.SendPresenter import dagger.Module import dagger.android.ContributesAndroidInjector +import kotlinx.android.synthetic.main.include_home_content.* import kotlinx.coroutines.launch import java.text.DecimalFormat @@ -41,6 +45,16 @@ class SendFragment : BaseFragment(), SendPresenter.SendView { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { + val enterTransitionSet = TransitionInflater.from(mainActivity).inflateTransition(R.transition.transition_zec_sent).apply { + duration = 3500L + } + + this.sharedElementReturnTransition = enterTransitionSet + this.sharedElementEnterTransition = enterTransitionSet + + this.allowReturnTransitionOverlap = false + allowEnterTransitionOverlap = false +0 return DataBindingUtil.inflate( inflater, R.layout.fragment_send, container, false ).let { @@ -107,6 +121,7 @@ class SendFragment : BaseFragment(), SendPresenter.SendView { launch { sendPresenter.start() } + if(MainActivity.DEV_MODE) showSendDialog() } override fun onPause() { @@ -115,11 +130,17 @@ class SendFragment : BaseFragment(), SendPresenter.SendView { } override fun submit(){ - val extras = FragmentNavigatorExtras( - binding.dialogSendContents to getString(R.string.transition_active_transaction_background), - binding.dialogTextTitle to getString(R.string.transition_active_transaction_title), - binding.dialogTextAddress to getString(R.string.transition_active_transaction_address) - ) + var extras = with(binding) { + listOf(dialogSendBackground, dialogSendContents, dialogTextTitle, dialogTextAddress) + .map{ it to it.transitionName } + .let { FragmentNavigatorExtras(*it.toTypedArray()) } + } +// val extras = FragmentNavigatorExtras( +// binding.dialogSendContents to binding.dialogSendContents.transitionName, +// binding.dialogTextTitle to getString(R.string.transition_active_transaction_title), +// binding.dialogTextAddress to getString(R.string.transition_active_transaction_address), +// binding.dialogSendBackground to getString(R.string.transition_active_transaction_background) +// ) mainActivity.navController.navigate(R.id.nav_home_fragment, null, diff --git a/zcash-android-wallet-app/app/src/main/res/layout/fragment_send.xml b/zcash-android-wallet-app/app/src/main/res/layout/fragment_send.xml index a0d9d43..d6c4429 100644 --- a/zcash-android-wallet-app/app/src/main/res/layout/fragment_send.xml +++ b/zcash-android-wallet-app/app/src/main/res/layout/fragment_send.xml @@ -278,6 +278,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/zcashBlack_54" + android:transitionName="@string/transition_active_transaction_background" android:visibility="gone" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -291,7 +292,7 @@ android:backgroundTint="@color/zcashWhite" android:clickable="true" android:focusable="true" - android:transitionName="@string/transition_active_transaction_background" + android:transitionName="@string/transition_active_transaction_card" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/zcash-android-wallet-app/app/src/main/res/layout/include_home_content.xml b/zcash-android-wallet-app/app/src/main/res/layout/include_home_content.xml index 9dcab26..6b48cf7 100644 --- a/zcash-android-wallet-app/app/src/main/res/layout/include_home_content.xml +++ b/zcash-android-wallet-app/app/src/main/res/layout/include_home_content.xml @@ -10,23 +10,24 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:paddingBottom="16dp" + android:transitionName="@string/transition_active_transaction_background"> diff --git a/zcash-android-wallet-app/app/src/main/res/transition/transition_zec_sent.xml b/zcash-android-wallet-app/app/src/main/res/transition/transition_zec_sent.xml index 36a0eb8..76dcd8b 100644 --- a/zcash-android-wallet-app/app/src/main/res/transition/transition_zec_sent.xml +++ b/zcash-android-wallet-app/app/src/main/res/transition/transition_zec_sent.xml @@ -3,7 +3,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:transitionOrdering="together"> - + + + diff --git a/zcash-android-wallet-app/app/src/main/res/values/strings.xml b/zcash-android-wallet-app/app/src/main/res/values/strings.xml index d4a3c7f..00523e4 100644 --- a/zcash-android-wallet-app/app/src/main/res/values/strings.xml +++ b/zcash-android-wallet-app/app/src/main/res/values/strings.xml @@ -30,6 +30,7 @@ transition_active_transaction_background transition_active_transaction_title transition_active_transaction_address + transition_active_transaction_card Your Zcash shielded address