日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

倒计时的CountDownTimer

發布時間:2024/4/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 倒计时的CountDownTimer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接看這里吧,我只是搬運工。 ?

定時執行在一段時候后停止的倒計時,在倒計時執行過程中會在固定間隔時間得到通知(譯者:觸發onTick方法),下面的例子顯示在一個文本框中顯示一個30s倒計時:?
Java代碼??
  • new?CountdownTimer(30000,?1000)?{??
  • ?????public?void?onTick(long?millisUntilFinished)?{??
  • ?????????mTextField.setText("seconds?remaining:?"?+?millisUntilFinished?/?1000);??
  • ?????}??
  • ?????public?void?onFinish()?{??
  • ?????????mTextField.setText("done!");??
  • ?????}??
  • ?}.start();???

  • onTick的調用是同步的,保證這次調用不會在之前調用完成前發生。這里的同步機制主要是用來:onTick的實現需要很多時間執行比倒計時間隔更重要的事情。?

    構造函數?
    ???????? public CountDownTimer (long millisInFuture, long countDownInterval)?
    參數?
    ?????????????????? millisInFuture? 從開始調用start()到倒計時完成并onFinish()方法被調用的毫秒數。(譯者注:倒計時時間,單位毫秒)?
    ?????????????????? countDownInterval? 接收onTick(long)回調的間隔時間。(譯者注:單位毫秒)?

    公共方法?
    public final void cancel ()?
    ???????? 取消倒計時(譯者:取消后,再次啟動會重新開始倒計時)????????
    ??????????????????
    public abstract void onFinish ()?
    ???????? 倒計時完成時被調用????

    public abstract void onTick (long millisUntilFinished)?
    ???????? 固定間隔被調用?
    參數?
    ??????????????????????????? millisUntilFinished?? 倒計時剩余時間。?

    public synchronized final CountDownTimer start ()?
    ???????? 啟動倒計時?
    Java代碼??
  • import?android.app.Activity;??
  • import?android.os.Bundle;??
  • import?android.os.CountDownTimer;??
  • import?android.util.Log;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.widget.Button;??
  • import?android.widget.TextView;??
  • ???
  • import?com.test.R;??
  • ???
  • public?class?CountDownTimeActivity?extends?Activity?implements?OnClickListener?{??
  • ???
  • ????TextView?mTextView;??
  • ????Button?mButton1;??
  • ????Button?mButton2;??
  • ?????
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ???????super.onCreate(savedInstanceState);??
  • ????????
  • ???????setContentView(R.layout.countdown);??
  • ????????
  • ???????mTextView?=?(TextView)findViewById(R.id.textView1);??
  • ???????mButton1?=?(Button)findViewById(R.id.button1);??
  • ???????mButton2?=?(Button)findViewById(R.id.button2);??
  • ???????mButton1.setOnClickListener(this);??
  • ???????mButton2.setOnClickListener(this);??
  • ????}??
  • ???
  • ????CountDownTimer?timer?=?new?CountDownTimer(40000,1000)?{??
  • ????????
  • ???????@Override??
  • ???????public?void?onTick(long?millisUntilFinished)?{??
  • ???????????mTextView.setText("seconds?remaining:?"?+?millisUntilFinished?/?1000);??
  • ???????????try?{??
  • ??????????????Thread.sleep(1200);??
  • ???????????}?catch?(InterruptedException?e)?{??
  • ??????????????e.printStackTrace();??
  • ???????????}??
  • ???????????Log.e("CountDown",millisUntilFinished+"");??
  • ???????}??
  • ????????
  • ???????@Override??
  • ???????public?void?onFinish()?{??
  • ???????????mTextView.setText("done!");??
  • ???????}??
  • ????};??
  • ?????
  • ????@Override??
  • ????public?void?onClick(View?v)?{??
  • ???????switch(v.getId()){??
  • ???????case?R.id.button1:??
  • ???????????timer.start();??
  • ???????????break;??
  • ???????case?R.id.button2:??
  • ???????????timer.cancel();??
  • ???????????break;??
  • ???????}??
  • ????????
  • ????}??
  • } ?

  • @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activation);
    initView();
    resendBTCountDownTimer(resendBtn,false);
    }

    /**
    * 重發驗證碼按鈕倒計時操作
    * @param resendBtn
    * @param resendCode: false初始化并倒計時開始;true點擊次數倒計時開始并重新獲取驗證碼操作
    */
    public void resendBTCountDownTimer(final Button resendBtn,boolean resendCode){
    if(resendCount>5){
    resendBtn.setText(R.string.resentcode_5times_tips);
    resendBtn.setEnabled(false);
    resendBtn.setBackgroundResource(R.drawable.button_no_cliable);
    return;
    }else{
    new CountDownTimer(MILLIS_INFUTURE, COUNTDOWN_INTERVAL) {
    @Override
    public void onTick(long millisUntilFinished) {
    resendBtn.setEnabled(false);
    resendBtn.setBackgroundResource(R.drawable.button_no_cliable);
    resendBtn.setText(getString(R.string.regetcodeafter30s, millisUntilFinished/1000));
    }
    @Override
    public void onFinish() {
    resendBtn.setText(R.string.resend_code);
    resendBtn.setEnabled(true);
    resendBtn.setBackgroundResource(R.drawable.registbtn);
    }
    }.start();
    if(resendCode){
    resendCount++ ;
    regetCheckCodeFun();
    }
    }
    }

    總結

    以上是生活随笔為你收集整理的倒计时的CountDownTimer的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。