zoukankan      html  css  js  c++  java
  • Android基础之——CountDownTimer类,轻松实现倒计时功能

    在发现这个类之前,一直是用的handler,子线程发消息,UI线程进行倒计时的显示工作。前几天在做一个倒计时显示的时候发现了这个类,用起来非常方便

    翻看了下源代码。内部已经帮我们实现了handler的子线程操作



    CountDownTimer这个类用起来非常easy。两个參数。几句代码搞定,例如以下:

    CountDownTimer(long millisInFuture, long countDownInterval) 


    构造函数有两个參数,第一个millisInFuture是指要倒计时的总时间,单位是long ms。第二个參数countDownInterval是指倒计时的频率,是一次倒计时1s 还是一次倒计时2s

    知道这两个參数的意思那就非常好办了,new一个CountDownTimer对象就会生成两个回调函数

    public void onTick(long millisUntilFinished) {
    				// TODO Auto-generated method stub
    				
    			}
    			
    			@Override
    			public void onFinish() {
    				// TODO Auto-generated method stub
    				
    			}


    第一个方法 就是在倒计时的时候调用的,每倒计时一次要进行什么操作。就能够放在这里面做。通常是对UI线程进行一些操作。比方对文本进行更改,达到倒计时的效果

    第二个方法是倒计时完毕后调用。倒计时完毕须要进行什么操作都能够写在里面。

    当然,最后一定要记得start() 否则线程不会開始

    所有代码:

    public class MainActivity extends Activity {
    
    	private TextView tv;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		tv = (TextView) findViewById(R.id.tv);
    		
    		/** 倒计时60秒,一次1秒 */
    		CountDownTimer timer = new CountDownTimer(60*1000, 1000) {
    			@Override
    			public void onTick(long millisUntilFinished) {
    				// TODO Auto-generated method stub
    				tv.setText("还剩"+millisUntilFinished/1000+"秒");
    			}
    			
    			@Override
    			public void onFinish() {
    				tv.setText("倒计时完毕了");
    			}
    		}.start();
    	}
    
    }

    效果图:


           

  • 相关阅读:
    正则表达式
    模块初阶
    面向对象的一些理论表述,涉及知识的理解和内置方法
    面向对象的反射 和 特殊内置方法
    面向对象的属性,类方法.静态变量
    面向对象的 多态,
    面向对象的继承属性
    面向对象组合思想的经典题
    面向对象,类名称空间查找顺序 和组合
    jQuery对象与DOM对象之间的转换
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/9396502.html
Copyright © 2011-2022 走看看