登陆倒计时TimeCount的使用

触发开始倒计时,一般是点击按钮事件中

 mTime = new TimeCount(60000, 1000);//参数一 :总时长,参数二:间隔时长
 mTime.start(); //开始计时
 startTimel = System.currentTimeMillis();//记录开始时间(后期有用)

创建TimeCount类

class TimeCount extends CountDownTimer {
        public TimeCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
        @Override
        public void onTick(long lg) {
            tv_login_yzm.setClickable(false);
            tv_login_yzm.setBackground(loginBgnom(LoginActivity.this));
            tv_login_yzm.setTextColor(getResources().getColor(R.color.readb));
            tv_login_yzm.setText("重新获取("+lg/1000+")");
            endTimel = System.currentTimeMillis();
            //获取倒计时剩余时间(当前时间戳-开始时间戳=剩余时间)
            residueTime = endTimel - startTimel ;
            if(restTimerTime!=0&&restTimerTime>0){ //restTimerTime二次进入应该倒计时的总时间
                residueTime = restTimerTime-residueTime ;
                LogTools.logi(Contans.TAG,"aresiduetime"+residueTime );
            }else {
                residueTime = 60000-residuetime;
                LogTools.logi(Contans.TAG,"bresiduetime"+residueTime );
            }

        }

        @Override
        public void onFinish() {
            tv_login_yzm.setText("获取验证码");
           //手机号为11位可以点击
            if (ed_login_phone.getEditableText().length() == 11){
            tv_login_yzm.setBackground(loginYzmBgselect(LoginActivity.this));
            tv_login_yzm.setTextColor(getResources().getColor(R.color.loginback));
            tv_login_yzm.setClickable(true);
            }
            LogTools.logi(Contans.TAG,"结束");
//计时结束不管是否二次进入都把二次进入时间设为0并清上次退出剩余倒计时
 restTimerTime=0;

//清空上次退出时间
   SharedPreferencesUtils.put(LoginActivity.this, "REST_TIME", "");

        }
    }

每次进入登录页面时判断是否是二次进入倒计时是否已经结束放在oncreate里

 private void reastartTime() {
//获取剩余倒计时时间戳
        String rest_time = (String) SharedPreferencesUtils.get(LoginActivity.this, "REST_TIME", "");
        LogTools.logi(Contans.TAG,"rest_time"+rest_time);
        if (EmptyUtils.isNotEmpty(rest_time)){  //是否二次进入
            long endTime = Long.parseLong(rest_time);
            LogTools.logi(Contans.TAG,"endTime"+endTime);
            if(endTime!=0){
                
                 //倒计时剩余时间
                 
                long currTime = System.currentTimeMillis();
                restTimerTime = endTime - currTime;
                LogTools.logi(Contans.TAG,"restTimerTime"+restTimerTime);
                if (restTimerTime > 0){
                    mTime = new TimeCount(restTimerTime, 1000);
                    mTime.start();
                    startTimel = System.currentTimeMillis();//二次进入记录开始时间
                    SharedPreferencesUtils.put(LoginActivity.this, "REST_TIME", ""); 
//清空上次退出时间
                }else {
                    mTime = new TimeCount(60000, 1000);
                }
            }else {
                mTime = new TimeCount(60000, 1000);
            }

        }else {
            //首次进入
            mTime = new TimeCount(60000,1000);
        }
    }

记得在结束时记录一下倒计时剩余时间

   @Override
    protected void onPause() {
        super.onPause();
        long  mendTime = System.currentTimeMillis();
        LogTools.logi(Contans.TAG,"mendTime "+mendTime );
  SharedPreferencesUtils.put(LoginActivity.this,"REST_TIME",String.valueOf(mendTime +residueTime));
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。