Android中实现倒计时的几种方式
时间:2020-09-20
本文章向大家介绍Android中实现倒计时的几种方式,主要包括Android中实现倒计时的几种方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.使用 CountDownTimer 实现倒计时
/**
* CountDownTimer timer = new CountDownTimer(3000, 1000)中,
* 第一个参数表示总时间,第二个参数表示间隔时间。
* 意思就是每隔一秒会回调一次方法onTick,然后1秒之后会回调onFinish方法。
*/
CountDownTimer timer = new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
txt.setText("倒计时" + millisUntilFinished / 1000 + "秒");
}
public void onFinish() {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
};
//调用 CountDownTimer 对象的 start() 方法开始倒计时,也不涉及到线程处理
timer.start();
2.利用Handler实现倒计时
private int count = 5;
private TextView tv;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==100){
if(count>0){
tv.setText(count+"");
count--;
handler.sendEmptyMessageDelayed(100,1000);
}else {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
tv = (TextView) findViewById(R.id.tv);
handler.sendEmptyMessageDelayed(100,1000);
}
3.利用动画实现倒计时
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
ValueAnimator animator = ValueAnimator.ofInt(5,0);
//设置时间
animator.setDuration(5000);
//均匀显示
animator.setInterpolator(new LinearInterpolator());
//监听
animator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value = (Integer) animation.getAnimatedValue();
tv.setText(value+"");
if(value==0){
startActivity(new Intent(MainActivity.this,Second.class));
}
}
});
animator.start();
}
4.利用Timer定时器
private TextView tv;
static int count = 5;
Handler handler = new Handler(){
public void handleMessage(Message msg) {
int count = msg.arg1;
if(count==0){
iv.setText("你好");
}else {
iv.setText(count+"");
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.iv);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.arg1 = count;
if(count!=-1){
count--;
}else {
return;
}
handler.sendMessage(message);
}
}, 1000,1000);
}
原文地址:https://www.cnblogs.com/mazing/p/13701180.html
- Oracle12c R2版本Application Containers特性(三)
- Shell系列-编写及执行脚本
- Spring Security 入门(五):在 Spring-Boot中的应用
- Go语言Goroutine与Channel内存模型
- Tarjan--LCA算法的个人理解即模板
- spark sql编程之实现合并Parquet格式的DataFrame的schema
- Oracle压缩黑科技(一)—基础表压缩
- 12 条用于 Linux 的 MySQL/MariaDB 安全最佳实践
- hdu----(4545)魔法串(LCS)
- Oracle压缩黑科技(二)—压缩数据的修改
- 在Pivotal Web Service上发布Spring Boot应用
- hdu---(1325)Is It A Tree?(并查集)
- spark2 sql编程样例:sql操作
- hdu----(1599)最大子矩阵(几何/dp)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- WebRTC 入门指南
- 【DB笔试面试844】在Oracle中,tnsnames.ora文件的作用是什么?
- Spring 基于注解(annotation)的配置之@Qualifier注解
- Spring 基于设值函数的依赖注入
- Spring 基于构造函数的依赖注入
- 绕过卡巴进程保护的一些总结
- Loki | 数据过期自动删除策略设计
- 【短道速滑二】古老的基于亮度平均值的自动Gamma校正算法。
- Docker-Compose基础与实战,看这一篇就够了
- 干货-python与安全(一)入门简介
- 怎么在vue的style标签里面使用变量?
- 幼儿园EasyNVR能力层安防监控平台调用视频直播流报404错误解决方案
- C# WinForm捕获全局异常
- 新时代渗透思路!微服务下的信息收集Ⅱ
- 【STM32F407开发板用户手册】第31章 STM32F407的SPI总线基础知识和HAL库API