checkpoint: active transaction on home screen is feature complete

Now, just need to cleanup the overall animation
This commit is contained in:
Kevin Gorham 2019-02-02 10:07:25 -05:00 committed by Kevin Gorham
parent 3404082869
commit 969af030db
9 changed files with 127 additions and 39 deletions

View File

@ -15,9 +15,11 @@ import androidx.annotation.StringRes
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.transition.ChangeBounds
import androidx.transition.Transition
import androidx.transition.TransitionInflater
import androidx.transition.TransitionSet
import cash.z.android.wallet.R
import cash.z.android.wallet.extention.Toaster
import cash.z.android.wallet.extention.toAppColor
import cash.z.android.wallet.extention.toAppString
import cash.z.android.wallet.extention.tryIgnore
@ -54,8 +56,26 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView {
): View? {
viewsInitialized = false
val enterTransitionSet = TransitionInflater.from(mainActivity).inflateTransition(R.transition.transition_zec_sent).apply {
duration = 3500L
}
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
}
override fun onTransitionResume(transition: Transition) {
}
override fun onTransitionPause(transition: Transition) {
}
override fun onTransitionCancel(transition: Transition) {
}
override fun onTransitionStart(transition: Transition) {
}
})
this.sharedElementEnterTransition = enterTransitionSet
this.sharedElementReturnTransition = enterTransitionSet
@ -70,7 +90,7 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView {
mainActivity.setupNavigation()
mainActivity.supportActionBar?.setTitle(R.string.destination_title_home)
}
// background_active_transaction.isActivated = true
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)
@ -83,7 +103,11 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView {
image_logo.setOnClickListener {
// forceRedraw()
// toggleViews(false)
background_active_transaction.isActivated = !background_active_transaction.isActivated
header_active_transaction.isActivated = !header_active_transaction.isActivated
}
button_active_transaction_cancel.setOnClickListener {
onCancelActiveTransaction()
}
}
@ -161,8 +185,9 @@ class HomeFragment : BaseFragment(), HomePresenter.HomeView {
}
}
//
// Private API
// Private View API
//
/**
@ -230,6 +255,13 @@ 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
homePresenter.onCancelActiveTransaction()
}
/**
* Defines the basic properties of each FAB button for use while initializing the FAB
*/

View File

@ -116,7 +116,9 @@ class SendFragment : BaseFragment(), SendPresenter.SendView {
override fun submit(){
val extras = FragmentNavigatorExtras(
binding.dialogSendContents to getString(R.string.transition_active_transaction)
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)
)
mainActivity.navController.navigate(R.id.nav_home_fragment,

View File

@ -1,6 +1,7 @@
package cash.z.android.wallet.ui.presenter
import android.util.Log
import cash.z.android.wallet.extention.Toaster
import cash.z.android.wallet.ui.presenter.Presenter.PresenterView
import cash.z.android.wallet.vo.WalletTransaction
import cash.z.android.wallet.vo.WalletTransactionStatus
@ -102,11 +103,17 @@ class HomePresenter(
}
}
fun onCancelActiveTransaction() {
// TODO: hold a reference to the job and cancel it
Toaster.short("Cancelled transaction!")
}
private fun NoteQuery.toWalletTransaction(timeOverride: Long? = null): WalletTransaction {
// convert time from seconds to milliseconds
val timestamp = if (timeOverride == null) time * 1000 else timeOverride * 1000
Log.e("@TWIG-u", "setting timestamp to $timestamp for value $value")
return WalletTransaction(height, if (sent) SENT else RECEIVED, timestamp, BigDecimal(value / 1e8))
}
}

View File

@ -7,14 +7,14 @@
<objectAnimator
android:propertyName="backgroundColor"
android:valueFrom="@color/zcashGray_light"
android:valueTo="@color/zcashBlue"
android:valueFrom="@color/fragment_home_background"
android:valueTo="@color/zcashWhite"
android:duration="@android:integer/config_shortAnimTime"
android:valueType="colorType" />
<objectAnimator
android:propertyName="translationZ"
android:valueTo="8dp"
android:valueTo="4dp"
android:startOffset="300"
android:duration="@android:integer/config_shortAnimTime"
android:interpolator="@android:interpolator/fast_out_slow_in" />
@ -29,8 +29,8 @@
<objectAnimator
android:propertyName="backgroundColor"
android:valueFrom="@color/zcashBlue"
android:valueTo="@color/zcashGray_light"
android:valueFrom="@color/zcashWhite"
android:valueTo="@color/fragment_home_background"
android:duration="@android:integer/config_shortAnimTime"
android:valueType="colorType" />

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/text_dark_dimmed"/>
<item android:state_enabled="true" android:color="@color/zcashRed" />
</selector>

View File

@ -291,7 +291,7 @@
android:backgroundTint="@color/zcashWhite"
android:clickable="true"
android:focusable="true"
android:transitionName="@string/transition_active_transaction"
android:transitionName="@string/transition_active_transaction_background"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@ -309,6 +309,7 @@
android:text="Send 1.73 ZEC ($200.23)?"
android:textSize="@dimen/text_size_h6"
android:textStyle="bold"
android:transitionName="@string/transition_active_transaction_title"
app:layout_constraintBottom_toTopOf="@id/dialog_text_address"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -341,6 +342,7 @@
android:text="ztestsapling1snmqdnfqnc407pvqw7sld8w5zxx6nd0523kvlj4jf39uvxvh7vn0hs3q38n07806dwwecqwke3t"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/text_size_body_1"
android:transitionName="@string/transition_active_transaction_address"
app:layout_constraintBottom_toTopOf="@+id/dialog_text_memo_included"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/dialog_text_to"

View File

@ -5,41 +5,76 @@
android:id="@+id/scrollable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fragment_home_background"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="30dp"
android:paddingBottom="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp">
android:paddingTop="30dp"
android:paddingEnd="16dp"
android:paddingBottom="16dp">
<View
android:id="@+id/background_active_transaction"
<!-- Active Transaction - primary -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/header_active_transaction"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_height="70dp"
android:background="@drawable/background_rounded_corners"
android:transitionName="@string/transition_active_transaction"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:clipToPadding="false"
android:padding="16dp"
android:stateListAnimator="@animator/selector_active_raise"
android:clickable="true"
android:focusableInTouchMode="true"
/>
android:transitionName="@string/transition_active_transaction_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/animation_view"
android:layout_width="36dp"
android:layout_height="0dp"
android:layout_marginLeft="16dp"
app:lottie_autoPlay="true"
app:lottie_loop="false"
app:lottie_rawRes="@raw/lottie_active_transaction_fail"
app:layout_constraintTop_toTopOf="@id/background_active_transaction"
app:layout_constraintBottom_toBottomOf="@id/background_active_transaction"
app:layout_constraintStart_toStartOf="@id/background_active_transaction"/>
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie_active_transaction"
android:layout_width="36dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lottie_autoPlay="true"
app:lottie_loop="false"
app:lottie_rawRes="@raw/lottie_active_transaction_fail" />
<TextView
android:id="@+id/text_active_transaction_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:text="Preparing 1.01 ZEC"
android:textSize="@dimen/text_size_body_1"
android:textStyle="bold"
android:transitionName="@string/transition_active_transaction_title"
app:layout_constraintStart_toEndOf="@id/lottie_active_transaction"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/text_active_transaction_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="to zsapling...123456789"
android:textSize="@dimen/text_size_caption"
android:transitionName="@string/transition_active_transaction_address"
app:layout_constraintStart_toStartOf="@id/text_active_transaction_title"
app:layout_constraintTop_toBottomOf="@id/text_active_transaction_title" />
<Button
android:id="@+id/button_active_transaction_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:text="cancel"
android:textColor="@color/selector_red_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- Label: Past Activity -->
<TextView
@ -47,13 +82,13 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:paddingBottom="16dp"
android:text="Past Activity"
android:textColor="@color/text_dark"
android:textSize="@dimen/text_size_body_2"
android:textStyle="bold"
android:paddingBottom="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/background_active_transaction" />
app:layout_constraintTop_toBottomOf="@id/header_active_transaction" />
<!-- Transactions -->
<androidx.recyclerview.widget.RecyclerView
@ -90,8 +125,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:padding="16dp"
android:gravity="center"
android:padding="16dp"
android:text="@string/home_empty_wallet"
android:textColor="#AAAAAA"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -32,6 +32,7 @@
<color name="zcashBlack_87">#DD000000</color>
<color name="zcashBlack">#00000000</color>
<color name="zcashPrimaryMedium">#136E6E</color>
<color name="zcashRed">#B00016</color>
<!-- -->
<!-- named colors -->
@ -58,6 +59,7 @@
<color name="fragment_receive_background">@color/zcashBlack_light</color>
<color name="fragment_request_background">@color/colorPrimary</color>
<color name="fragment_send_background">@color/zcashWhite_light</color>
<color name="fragment_home_background">@color/zcashWhite_light</color>
<color name="launcher_icon_background">@color/zcashPrimaryMedium</color>
<color name="receive_title_background">@color/zcashBlack_12</color>
<color name="home_transaction_item_background">@color/zcashBlueGray</color>

View File

@ -27,7 +27,9 @@
<string name="destination_menu_label_settings">Settings</string>
<!-- Transitions -->
<string name="transition_active_transaction">transition_active_transaction</string>
<string name="transition_active_transaction_background">transition_active_transaction_background</string>
<string name="transition_active_transaction_title">transition_active_transaction_title</string>
<string name="transition_active_transaction_address">transition_active_transaction_address</string>
<!-- Screen copy -->
<string name="receive_address_title">Your Zcash shielded address</string>