CreditCardDialog.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package com.bgy.autosale.payutil;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.content.Context;
  5. import android.os.Handler;
  6. import android.os.Message;
  7. import android.text.Html;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import com.bgy.autosale.R;
  14. import com.example.offpay.nayax.CreditCardMessage;
  15. import com.hboxs.base_library.callback.DialogClickListener;
  16. import com.hboxs.base_library.constant.Name;
  17. import com.hboxs.base_library.util.LogUtil;
  18. import com.hboxs.base_library.util.UiUtil;
  19. import com.hboxs.base_library.widget.BaseDialogNoDatabinding;
  20. import com.orhanobut.hawk.Hawk;
  21. import com.orhanobut.logger.Logger;
  22. import org.greenrobot.eventbus.EventBus;
  23. import org.greenrobot.eventbus.Subscribe;
  24. import org.greenrobot.eventbus.ThreadMode;
  25. import java.lang.ref.WeakReference;
  26. import java.util.Timer;
  27. import java.util.TimerTask;
  28. // todo
  29. // 信用卡的逻辑
  30. public class CreditCardDialog extends BaseDialogNoDatabinding implements View.OnClickListener {
  31. private String TAG = this.getClass().getSimpleName();
  32. private Button btnCancel;
  33. private TextView tvTime;
  34. private ImageView ivQrCode;
  35. private MyHandler mHandler;
  36. private static int time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120);
  37. private boolean isLoop = true;
  38. private DialogClickListener listener;
  39. private TextView tvScanTip;
  40. private TextView tvScanNow;
  41. public CreditCardDialog(Context context, Activity activity) {
  42. super(context, activity);
  43. }
  44. @Override
  45. protected void initView() {
  46. mHandler = new MyHandler(this);
  47. btnCancel = findViewById(R.id.btn_cancel);
  48. tvTime = findViewById(R.id.tv_time);
  49. tvScanTip = findViewById(R.id.tv_scan_tip);
  50. tvScanTip.setText(Html.fromHtml(UiUtil.getStringRes(R.string.dont_coin1)));
  51. tvScanNow = findViewById(R.id.tv_scan_now);
  52. ivQrCode = findViewById(R.id.iv_qr_code);
  53. if (Hawk.get("isScan",false)){
  54. ivQrCode.setImageResource(R.drawable.icon_scan);
  55. tvScanNow.setText(Html.fromHtml(UiUtil.getStringRes(R.string.scan_now)));
  56. Log.d(TAG, "initView: isScan");
  57. }else {
  58. tvScanNow.setText(Html.fromHtml(UiUtil.getStringRes(R.string.credit_card_payment)));
  59. ivQrCode.setImageResource(R.drawable.icon_xinyongka_pay);
  60. }
  61. String s = Hawk.get(Name.CREDIT_CARD_PAYMENT_TEXT_DESCRIPTION, "");
  62. if (!"".equals(s)) {
  63. tvScanNow.setText(Html.fromHtml(s));
  64. }
  65. isLoop = true;
  66. btnCancel.setOnClickListener(this);
  67. ivQrCode.setOnClickListener(this);
  68. }
  69. @Override
  70. protected int getLayout() {
  71. return R.layout.dialog_credit_card;
  72. }
  73. @Override
  74. protected int getAnimType() {
  75. return 0;
  76. }
  77. public void setListener(DialogClickListener listener) {
  78. this.listener = listener;
  79. }
  80. @Override
  81. public void onClick(View v) {
  82. switch (v.getId()) {
  83. case R.id.btn_cancel:
  84. listener.onClickListener(125);
  85. dismiss();
  86. break;
  87. case R.id.iv_qr_code:
  88. listener.onClickListener(R.id.iv_qr_code);
  89. break;
  90. }
  91. }
  92. /**
  93. * 对话框显示
  94. */
  95. @Override
  96. public void show() {
  97. super.show();
  98. time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120);
  99. tvTime.setText(String.valueOf(time));
  100. startTimeDown();
  101. EventBus.getDefault().register(this);
  102. Logger.d("倒计时show:");
  103. }
  104. private Timer countDownTimer;
  105. private TimerTask timerTask;
  106. /**
  107. * 开始倒计时
  108. */
  109. public void startTimeDown() {
  110. time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120);
  111. TimerUtil.stopTimerAndTimerTask(countDownTimer, timerTask);
  112. LogUtil.d(TAG, "startFinishTimer: 开始倒计时 ");
  113. countDownTimer = new Timer();
  114. timerTask = new TimerTask() {
  115. @Override
  116. public void run() {
  117. Logger.d("倒计时run2:" + isLoop);
  118. Message message = new Message();
  119. message.what = 1;
  120. mHandler.sendMessage(message);
  121. time--;
  122. LogUtil.d(TAG, "thread: 倒计时:" + time);
  123. }
  124. };
  125. countDownTimer.schedule(timerTask, 0, 1000);
  126. }
  127. public void stopTimerDown() {
  128. // LogUtil.d(TAG, "stopTimerDown: 停止倒计时");
  129. mHandler.removeCallbacksAndMessages(null);
  130. TimerUtil.stopTimerAndTimerTask(countDownTimer, timerTask);
  131. time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120);
  132. }
  133. @Override
  134. public void dismiss() {
  135. super.dismiss();
  136. isLoop = false;
  137. // listener.onClickListener(125);
  138. stopTimerDown();
  139. EventBus.getDefault().unregister(this);
  140. if (listener!=null){
  141. listener.onClickListener(1000);
  142. }
  143. Logger.d("倒计时dismiss:");
  144. }
  145. @Subscribe(threadMode = ThreadMode.MAIN)
  146. public void event(CreditCardMessage messageEvent) {
  147. switch (messageEvent.getType()){
  148. case success:
  149. listener.onClickListener(130);
  150. break;
  151. case failure:
  152. listener.onClickListener(131);
  153. break;
  154. case invalid:
  155. listener.onClickListener(132);
  156. dismiss();
  157. break;
  158. }
  159. }
  160. static class MyHandler extends Handler {
  161. WeakReference<Dialog> mWeakReference;
  162. public MyHandler(Dialog activity) {
  163. mWeakReference = new WeakReference<Dialog>(activity);
  164. }
  165. @Override
  166. public void handleMessage(Message msg) {
  167. super.handleMessage(msg);
  168. final CreditCardDialog dialog = (CreditCardDialog) mWeakReference.get();
  169. switch (msg.what) {
  170. case 1:
  171. if (dialog != null) {
  172. if (time <= -1) {
  173. dialog.isLoop = false;
  174. dialog.listener.onClickListener(125);
  175. dialog.dismiss();
  176. return;
  177. }
  178. dialog.tvTime.setText(String.valueOf(time));
  179. }
  180. break;
  181. }
  182. }
  183. }
  184. }