diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java index d4ad3857..8f5d9e38 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/payoutmode/PayoutModeSendMoneyFragment.java @@ -14,7 +14,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; +import android.view.animation.Animation; import android.view.animation.Interpolator; +import android.view.animation.Transformation; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; @@ -60,6 +62,9 @@ public class PayoutModeSendMoneyFragment extends BaseFragment implements SendMon @BindView(R.id.accountWrapper) View accountViewContainer; + @BindView(R.id.bankDetailContainer) + View bankDetailContainer; + @BindView(R.id.payoutModeContinueButton) Button paymentButtonContinue; @@ -165,27 +170,116 @@ public class PayoutModeSendMoneyFragment extends BaseFragment implements SendMon @Override public void onPayoutModeSelected(PayoutMode selectedPayoutMode) { this.selectedPayoutMode = selectedPayoutMode; - showBankSelectView(this.selectedPayoutMode.getBankrequired().equalsIgnoreCase(Constants.TRUE_STRING)); clearBankData(); clearBranchData(); clearAccounData(); + showBankSelectView(this.selectedPayoutMode.getBankrequired().equalsIgnoreCase(Constants.TRUE_STRING)); + + + } + + public static void expand(final View v,Runnable onAnimationEndTask) { + v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + final int targetHeight = v.getMeasuredHeight(); + + v.getLayoutParams().height = 1; + v.setVisibility(View.VISIBLE); + Animation a = new Animation() + { + @Override + protected void applyTransformation(float interpolatedTime, Transformation t) { + v.getLayoutParams().height = interpolatedTime == 1 + ? ViewGroup.LayoutParams.WRAP_CONTENT + : (int)(targetHeight * interpolatedTime); + v.requestLayout(); + } + @Override + public boolean willChangeBounds() { + return true; + } + }; + + a.setDuration((int)(targetHeight / v.getContext().getResources().getDisplayMetrics().density)); + a.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + if(onAnimationEndTask!=null) + onAnimationEndTask.run(); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + v.startAnimation(a); } + public static void collapse(final View v,Runnable onAnimationEndTask) { + final int initialHeight = v.getMeasuredHeight(); + + Animation a = new Animation() + { + @Override + protected void applyTransformation(float interpolatedTime, Transformation t) { + if(interpolatedTime == 1){ + v.setVisibility(View.GONE); + }else{ + v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime); + v.requestLayout(); + } + } + + @Override + public boolean willChangeBounds() { + return true; + } + }; + + a.setDuration((int)(initialHeight / v.getContext().getResources().getDisplayMetrics().density)); + a.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + if(onAnimationEndTask!=null) + onAnimationEndTask.run(); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + v.startAnimation(a); + } private void showBankSelectView(boolean action) { branchListContainer.setVisibility(View.GONE); accountViewContainer.setVisibility(View.GONE); if (action) { + if(bankDetailContainer.getVisibility()==View.GONE) + expand(bankDetailContainer,()->{ + bankDetailContainer.setVisibility(View.VISIBLE); + if (bankListContainer.getVisibility() != View.VISIBLE) { + bankListContainer.setVisibility(View.INVISIBLE); + bankListContainer.setTranslationY(-bankListContainer.getHeight()); + bankListContainer.setVisibility(View.VISIBLE); + ViewCompat.animate(bankListContainer).translationY(0).setInterpolator(interpolator).setDuration(400); + } + }); - - if (bankListContainer.getVisibility() != View.VISIBLE) { - bankListContainer.setVisibility(View.INVISIBLE); - bankListContainer.setTranslationY(-bankListContainer.getHeight()); - bankListContainer.setVisibility(View.VISIBLE); - ViewCompat.animate(bankListContainer).translationY(0).setInterpolator(interpolator).setDuration(400); - } } else { + if (bankListContainer.getVisibility() == View.VISIBLE) { ViewCompat.animate(bankListContainer).translationY(-bankListContainer.getHeight()).setInterpolator(interpolator).setDuration(400).setListener(new ViewPropertyAnimatorListenerAdapter() { @Override @@ -194,6 +288,10 @@ public class PayoutModeSendMoneyFragment extends BaseFragment implements SendMon bankListContainer.setVisibility(View.INVISIBLE); bankListContainer.setTranslationY(bankListContainer.getHeight()); ViewCompat.animate(bankListContainer).setListener(null); + + if(bankDetailContainer.getVisibility()==View.VISIBLE) + collapse(bankDetailContainer,()->bankDetailContainer.setVisibility(View.GONE)); + } }); diff --git a/app/src/main/res/layout/fragment_payout_mode_send_money_v2.xml b/app/src/main/res/layout/fragment_payout_mode_send_money_v2.xml index 965f8d22..cf160f7d 100644 --- a/app/src/main/res/layout/fragment_payout_mode_send_money_v2.xml +++ b/app/src/main/res/layout/fragment_payout_mode_send_money_v2.xml @@ -45,8 +45,8 @@ @@ -152,10 +152,10 @@