本列用TImer 和TimerTask实现
首先新建BaseTimerTask 继承 TimerTask

package com.example.latte;import com.example.latte.net.ITimerListener;import java.util.TimerTask;public class BaseTimerTask extends TimerTask {private ITimerListener listener;public BaseTimerTask(ITimerListener listener) {this.listener = listener;}@Overridepublic void run() {if (listener!=null){listener.onTimer();}}
}

因为在run方法中我们不具体实现,所以我们新建一个接口ITimerListener然后传入到BaseTimerTask,让activity
实现接口 这就让具体的实现到了View中

package com.example.latte.net;public interface ITimerListener {void onTimer();}

最后是我们的activity:

package com.example.latte.details;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatTextView;import com.example.latte.BaseTimerTask;
import com.example.latte.R;
import com.example.latte.net.ITimerListener;import java.text.MessageFormat;
import java.util.Timer;public class GoodsDetailsActivity  extends AppCompatActivity implements ITimerListener {//显示倒计时的TextViewprivate AppCompatTextView textView=null;//倒计时时长private int mCount=10;private Timer mTimer=null;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_goods);textView=findViewById(R.id.tv_goods);initTimer();}private void initTimer() {mTimer=new Timer();BaseTimerTask task=new BaseTimerTask(this);mTimer.schedule(task,0,1000);}@Overridepublic void onTimer() {runOnUiThread(new Runnable() {@Overridepublic void run() {if (textView!=null){textView.setText(MessageFormat.format("跳转\\{0}s",mCount));mCount--;if (mCount<0){if (mTimer!=null){mTimer.cancel();mTimer=null;}}}}});}
}

一个简单倒计时的封装相关推荐

  1. html 倒计时字体消失,最简单的一个网页倒计时代码 时间到期后会显示出提醒内容 收藏版...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 很多时候我们都是需要提醒自己做什么事情的,像我这么健忘的,更加需要倒计时之类的记录来提醒自己,这是我找到最简单简介的代码了! 最简单的一个网页倒计时代码 ...

  2. 制作一个简单的倒计时动画

    今天我使用Android Studio制作了一个简单的倒计时动画,算是练习一下属性动画的使用吧,先看一个效果吧,点击播放倒计时动画按钮后可以播放倒计时动画 实现方式: 第一步:使用Android St ...

  3. [HDF5] 封装了一个简单的C++ HDF5工具库,实现常用数据类型的读写

    目录 一.开发环境 二.主要功能 三.文件结构 四.HDF5写数据到hdf5文件功能实现 五.HDF5读hdf5文件数据到程序中数据结构功能实现 六.头文件Hdf5Function.h 七.工具类 八 ...

  4. 【Vue3.0实战逐步深入系列】扩展投票功能基于elementui进行组件封装实现一个简单的问卷调查功能

    [千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.在前面一偏文章中我们把投票功能进行了简单的改造:引入了axios第三方库并进行了二次封装用于模拟请求服务器数据.同时添加了一 ...

  5. 使用Python 封装一个简单的Mysql工具类

    pymysql操作mysql,虽然简单,但每次都要链接数据库,获取游标,关闭游标,关闭链接.这些操作无技术含量,还要重复编写!!想一想不如封装一个DBUtil,来提高开发效率. 要编写工具类首先要把公 ...

  6. android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...

    一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...

  7. Qt 封装一个简单的LED(指示灯)控件

    Qt 封装一个简单的LED(指示灯)控件 1,效果~ 所以 这个简单的LED类可以自定义大小~ 可以点亮或熄灭,也可以闪烁

  8. 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?

    历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...

  9. 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

    本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...

最新文章

  1. 【ACM】与全排列相关的STL函数 prev_permutation next_permutation
  2. delphi 鼠标获取窗口句柄_Windows窗口自定义,只需WindowTop一键设置
  3. 担心被绑架?多云战略为企业解烦忧!
  4. Angular 界面元素的条件渲染
  5. Java实现二维数组和稀疏数组的转换
  6. 【高校宿舍管理系统】第零章 项目功能和技术路线
  7. python如何保存列表_python中数据的保存
  8. 整理struct sockaddr和struct sockaddr_in
  9. Unity工程中 .Meta 文件的来龙去脉
  10. android fragment 跳到另一个fragment
  11. typora下载安装步骤
  12. 发电厂与变电站高低压工程设计
  13. Codeforces Round #476 (Div. 2) 题解
  14. pyton--解决pycharm控制台中文显示unicode \xe6\x9d\x8e\xe7\x99\xbd\xe9\xa3\x9e码问题
  15. 法国留学DIY的必备条件和步骤
  16. 测量工具----示波器
  17. iOS 特种label:镂空文字、类歌词进度显示文字
  18. STM32CUBEMX F103 HAL库开发之 USB虚拟串口
  19. IOS AVPlayer无法播放H265编码格式的MP4视频
  20. 杰理之 盘/TF 卡升级【篇】

热门文章

  1. 《30天自制操作系统》 05-08部分 从字符显示到中断处理
  2. Windows10输入法添加自定义短语
  3. linux修改屏幕大小和分辨率,linux手动更改显示器分辨率
  4. Google拼音顿号输入及自定义短语
  5. 一加10 Pro拍照如何?随手一拍都是大片
  6. PIP出现Fatal error in launcher:
  7. 使用PHP通过AJAX获取到JSON文件的数据,点击按钮后添加url 跳转到指定页面
  8. 纯CSS3书本打开翻页js特效
  9. 视频号上热门技巧,视频号上热门小窍门
  10. 像准备比赛一样准备晋升答辩 - 互联网公司答辩晋升经验分享