• 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

  • 相关阅读:
    深入理解CSS中的margin负值
    深入理解CSS浮动
    深入理解CSS绝对定位
    深入理解display属性
    JAVA-初步认识-第四章-内存空间的划分&栈内存&堆内存
    JAVA-初步认识-第四章-数组-概述和定义
    JAVA-初步认识-第四章-重载练习
    JAVA-初步认识-第四章-重载
    JAVA-初步认识-第四章-函数-内存加载过程
    JAVA-初步认识-第一章-整体的认识
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3908966.html
Copyright © 2020-2023  润新知