zoukankan      html  css  js  c++  java
  • Android -- 倒计时的实现

    CountDownTimer                                                                     

    CountDownTimer这个类,实现了倒计时的功能。将后台线程的创建和Handler队列封装成一个方便的类调用。

    这个类比较简单,只有四个方法:onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。

    下面是官方给的一个小例子:

    new CountdownTimer(30000, 1000) {  
        public void onTick(long millisUntilFinished) {  
            mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);  
        }  
        public void onFinish() {  
            mTextField.setText("done!");  
        }  
     }.start();

    Code                                                                                   

    package com.yydcdut.daojishi;
    
    import android.os.Bundle;
    import android.os.CountDownTimer;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        private MyCount mc;  
        private TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);tv = (TextView)findViewById(R.id.show);  
            mc = new MyCount(30000, 1000);  
            mc.start();
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        
        /*定义一个倒计时的内部类*/  
        class MyCount extends CountDownTimer {     
            public MyCount(long millisInFuture, long countDownInterval) {     
                super(millisInFuture, countDownInterval);     
            }     
            @Override     
            public void onFinish() {     
                tv.setText("finish");        
            }     
            @Override     
            public void onTick(long millisUntilFinished) {     
                tv.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");     
                Toast.makeText(MainActivity.this, millisUntilFinished / 1000 + "", Toast.LENGTH_LONG).show();//toast有显示时间延迟       
            }    
        }     
    
    }

    主要是重写onTick和onFinsh这两个方法,onFinish()中的代码是计时器结束的时候要做的事情onTick(Long m)中的代码是你倒计时开始时要做的事情,参数m是直到完成的时间,构造方法MyCount()中的两个参数中,前者是倒计的时间数,后者是倒计每秒中间的间隔时间,都是以毫秒为单位。例如要倒计时30秒,每秒中间间隔时间是1秒,两个参数可以这样写MyCount(30000,1000)。 将后台线程的创建和Handler队列封装成为了一个方便的类调用。

    当你想取消的时候使用mc.cancel()方法就行了。

    我是天王盖地虎的分割线                                                             

    1

    源代码:http://pan.baidu.com/s/1dD1Qx01

    倒计时.zip

  • 相关阅读:
    Sharepoint COMException 0x81020037
    [SharePoint]如何去掉欢迎导航的信息?
    配置两台Azure服务器,一台加入另一台的ad域加入不进去的问题
    在Azure上部署Sqlserver网络访问不了的问题
    Page 由于代码已经过优化或者本机框架位于调用堆栈之上
    ProjectOnline同步数据到线下
    关于ProjectServer定制化项目中心页面
    oracle数据库逐步学习总结【基础二】
    Java学习个人总结
    oracle数据库逐步学习总结【基础一】
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3908966.html
Copyright © 2011-2022 走看看