package com.bgy.autosale.payutil; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Handler; import android.os.Message; import android.text.Html; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.bgy.autosale.R; import com.example.offpay.nayax.CreditCardMessage; import com.hboxs.base_library.callback.DialogClickListener; import com.hboxs.base_library.constant.Name; import com.hboxs.base_library.util.LogUtil; import com.hboxs.base_library.util.UiUtil; import com.hboxs.base_library.widget.BaseDialogNoDatabinding; import com.orhanobut.hawk.Hawk; import com.orhanobut.logger.Logger; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.lang.ref.WeakReference; import java.util.Timer; import java.util.TimerTask; // todo // 信用卡的逻辑 public class CreditCardDialog extends BaseDialogNoDatabinding implements View.OnClickListener { private String TAG = this.getClass().getSimpleName(); private Button btnCancel; private TextView tvTime; private ImageView ivQrCode; private MyHandler mHandler; private static int time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120); private boolean isLoop = true; private DialogClickListener listener; private TextView tvScanTip; private TextView tvScanNow; public CreditCardDialog(Context context, Activity activity) { super(context, activity); } @Override protected void initView() { mHandler = new MyHandler(this); btnCancel = findViewById(R.id.btn_cancel); tvTime = findViewById(R.id.tv_time); tvScanTip = findViewById(R.id.tv_scan_tip); tvScanTip.setText(Html.fromHtml(UiUtil.getStringRes(R.string.dont_coin1))); tvScanNow = findViewById(R.id.tv_scan_now); ivQrCode = findViewById(R.id.iv_qr_code); if (Hawk.get("isScan",false)){ ivQrCode.setImageResource(R.drawable.icon_scan); tvScanNow.setText(Html.fromHtml(UiUtil.getStringRes(R.string.scan_now))); Log.d(TAG, "initView: isScan"); }else { tvScanNow.setText(Html.fromHtml(UiUtil.getStringRes(R.string.credit_card_payment))); ivQrCode.setImageResource(R.drawable.icon_xinyongka_pay); } String s = Hawk.get(Name.CREDIT_CARD_PAYMENT_TEXT_DESCRIPTION, ""); if (!"".equals(s)) { tvScanNow.setText(Html.fromHtml(s)); } isLoop = true; btnCancel.setOnClickListener(this); ivQrCode.setOnClickListener(this); } @Override protected int getLayout() { return R.layout.dialog_credit_card; } @Override protected int getAnimType() { return 0; } public void setListener(DialogClickListener listener) { this.listener = listener; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_cancel: listener.onClickListener(125); dismiss(); break; case R.id.iv_qr_code: listener.onClickListener(R.id.iv_qr_code); break; } } /** * 对话框显示 */ @Override public void show() { super.show(); time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120); tvTime.setText(String.valueOf(time)); startTimeDown(); EventBus.getDefault().register(this); Logger.d("倒计时show:"); } private Timer countDownTimer; private TimerTask timerTask; /** * 开始倒计时 */ public void startTimeDown() { time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120); TimerUtil.stopTimerAndTimerTask(countDownTimer, timerTask); LogUtil.d(TAG, "startFinishTimer: 开始倒计时 "); countDownTimer = new Timer(); timerTask = new TimerTask() { @Override public void run() { Logger.d("倒计时run2:" + isLoop); Message message = new Message(); message.what = 1; mHandler.sendMessage(message); time--; LogUtil.d(TAG, "thread: 倒计时:" + time); } }; countDownTimer.schedule(timerTask, 0, 1000); } public void stopTimerDown() { // LogUtil.d(TAG, "stopTimerDown: 停止倒计时"); mHandler.removeCallbacksAndMessages(null); TimerUtil.stopTimerAndTimerTask(countDownTimer, timerTask); time = Hawk.get(Name.NAYAX_CARD_TIME_PAYMENT,120); } @Override public void dismiss() { super.dismiss(); isLoop = false; // listener.onClickListener(125); stopTimerDown(); EventBus.getDefault().unregister(this); if (listener!=null){ listener.onClickListener(1000); } Logger.d("倒计时dismiss:"); } @Subscribe(threadMode = ThreadMode.MAIN) public void event(CreditCardMessage messageEvent) { switch (messageEvent.getType()){ case success: listener.onClickListener(130); break; case failure: listener.onClickListener(131); break; case invalid: listener.onClickListener(132); dismiss(); break; } } static class MyHandler extends Handler { WeakReference mWeakReference; public MyHandler(Dialog activity) { mWeakReference = new WeakReference(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); final CreditCardDialog dialog = (CreditCardDialog) mWeakReference.get(); switch (msg.what) { case 1: if (dialog != null) { if (time <= -1) { dialog.isLoop = false; dialog.listener.onClickListener(125); dialog.dismiss(); return; } dialog.tvTime.setText(String.valueOf(time)); } break; } } } }