CountDownTimer完整详细示例

简介: MainActivity如下:package cc.cv;import android.os.Bundle;import android.os.
MainActivity如下:
package cc.cv;

import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.app.Activity;
/**
 * Demo示例:
 * CountDownTimer完整详细示例
 * 代码很简单,直接看注释即可
 * 
 * CountDownTimer是Android4.0引入的倒计时
 */
public class MainActivity extends Activity {
	private Button mStartButton;
	private Button mCancelButton;
    private CountDownTimerSubClass mCountDownTimerSubClass;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	
	
	private void init(){
		mCountDownTimerSubClass=new CountDownTimerSubClass(15*1000, 1000);
		mStartButton=(Button) findViewById(R.id.startButton);
		//开始倒计时
		mStartButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				mCountDownTimerSubClass.start();
			}
		});
		//取消倒计时.
		//再次调用CountDownTimer的start时会重新开始倒计时.
		mCancelButton=(Button) findViewById(R.id.cancelButton);
		mCancelButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				mCountDownTimerSubClass.cancel();
			}
		});
	}
	
	

	private class CountDownTimerSubClass extends CountDownTimer{
		/**
		 * millisInFuture 倒计时间
		 * countDownInterval 每两次倒计时之间的间隔
		 */
		public CountDownTimerSubClass(long millisInFuture,long countDownInterval) {
			super(millisInFuture, countDownInterval);
		}

		/**
		 * 倒计时结束
		 */
		@Override
		public void onFinish() {
			System.out.println("结束");
		}

		/**
		 * 每一个倒计时间点到来时均会触发该方法
		 * millisUntilFinished表示整个倒计时剩余的时间
		 */
		@Override
		public void onTick(long millisUntilFinished) {
			long remainedSeconds=millisUntilFinished/1000;
			System.out.println("剩余: "+remainedSeconds+" s");
		}
		
		
	}

}

main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
        android:id="@+id/startButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:text="start" />
    
    
     <Button
        android:id="@+id/cancelButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/startButton"
        android:layout_marginTop="100dp"
        android:text="cancel" />

</RelativeLayout>


相关文章
|
5月前
|
小程序
小程序:下拉刷新的简单方法"enablePullDownRefresh": true
小程序:下拉刷新的简单方法"enablePullDownRefresh": true
69 0
|
11月前
干货三:CountDownTimer倒计时工具类
干货三:CountDownTimer倒计时工具类
43 0
|
XML Android开发 数据格式
startActivityForResult()和onSaveInstanceState()用法
该方法作用是:A Activity跳转到B Activity携带返回数据 MainActivity的xml布局内代码: MainActivity,class文件内部代码 package com.
1101 0
|
开发者
AsyncTask.cancel()的结束问题
实际项目中有这么一个问题,用户进入详情界面,那么我们就要网络加载数据并展现在UI上,这个加载用线程或者异步。 这里就拿项目中统一用异步任务来获取网络数据把。 用户可能会有这么一个操作,它在一个商品(说说等)列表中,点击一个列表项,进入到相应的详情界面,这时候,我们会开启一个异步任务来获取网络数据,但是网络差的情况下, 用户可能就不愿意等了,立马按后退按钮回到列表,点击下一个别的列表项进入详情界面,发现加载太慢,又按后退键,如此反复,那么就导致此时有多个异步任务在执行,或者出现OOM问题,或者出现异步任务等待问题。
863 0
|
Android开发 数据格式 XML
startActivityForResul完整详解示例
MainActivity如下:package cc.vv; import android.os.Bundle; import android.app.
579 0
|
Android开发 数据格式 XML
notifyDataSetChanged使用示例
MainActivity如下: package cc.ca; import java.util.ArrayList; import java.
840 0