一个简单倒计时的封装
本列用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;}}}}});}
}
一个简单倒计时的封装相关推荐
- html 倒计时字体消失,最简单的一个网页倒计时代码 时间到期后会显示出提醒内容 收藏版...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 很多时候我们都是需要提醒自己做什么事情的,像我这么健忘的,更加需要倒计时之类的记录来提醒自己,这是我找到最简单简介的代码了! 最简单的一个网页倒计时代码 ...
- 制作一个简单的倒计时动画
今天我使用Android Studio制作了一个简单的倒计时动画,算是练习一下属性动画的使用吧,先看一个效果吧,点击播放倒计时动画按钮后可以播放倒计时动画 实现方式: 第一步:使用Android St ...
- [HDF5] 封装了一个简单的C++ HDF5工具库,实现常用数据类型的读写
目录 一.开发环境 二.主要功能 三.文件结构 四.HDF5写数据到hdf5文件功能实现 五.HDF5读hdf5文件数据到程序中数据结构功能实现 六.头文件Hdf5Function.h 七.工具类 八 ...
- 【Vue3.0实战逐步深入系列】扩展投票功能基于elementui进行组件封装实现一个简单的问卷调查功能
[千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.在前面一偏文章中我们把投票功能进行了简单的改造:引入了axios第三方库并进行了二次封装用于模拟请求服务器数据.同时添加了一 ...
- 使用Python 封装一个简单的Mysql工具类
pymysql操作mysql,虽然简单,但每次都要链接数据库,获取游标,关闭游标,关闭链接.这些操作无技术含量,还要重复编写!!想一想不如封装一个DBUtil,来提高开发效率. 要编写工具类首先要把公 ...
- android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...
一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...
- Qt 封装一个简单的LED(指示灯)控件
Qt 封装一个简单的LED(指示灯)控件 1,效果~ 所以 这个简单的LED类可以自定义大小~ 可以点亮或熄灭,也可以闪烁
- 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?
历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...
- 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...
最新文章
- 【ACM】与全排列相关的STL函数 prev_permutation next_permutation
- delphi 鼠标获取窗口句柄_Windows窗口自定义,只需WindowTop一键设置
- 担心被绑架?多云战略为企业解烦忧!
- Angular 界面元素的条件渲染
- Java实现二维数组和稀疏数组的转换
- 【高校宿舍管理系统】第零章 项目功能和技术路线
- python如何保存列表_python中数据的保存
- 整理struct sockaddr和struct sockaddr_in
- Unity工程中 .Meta 文件的来龙去脉
- android fragment 跳到另一个fragment
- typora下载安装步骤
- 发电厂与变电站高低压工程设计
- Codeforces Round #476 (Div. 2) 题解
- pyton--解决pycharm控制台中文显示unicode \xe6\x9d\x8e\xe7\x99\xbd\xe9\xa3\x9e码问题
- 法国留学DIY的必备条件和步骤
- 测量工具----示波器
- iOS 特种label:镂空文字、类歌词进度显示文字
- STM32CUBEMX F103 HAL库开发之 USB虚拟串口
- IOS AVPlayer无法播放H265编码格式的MP4视频
- 杰理之 盘/TF 卡升级【篇】