位置: 编程技术 - 正文

android 倒计时控件(安卓好用的倒计时)

编辑:rootadmin
自定义倒计时控件分类: 5、andriod开发 -- : 人阅读 评论(0)收藏 举报

推荐整理分享android 倒计时控件(安卓好用的倒计时),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Android倒计时控件,安卓倒计时的软件推荐,Android倒计时控件,安卓的倒计时软件,安卓倒计时小部件,android倒计时界面,android倒计时代码5秒,安卓的倒计时软件,内容如对您有帮助,希望把文章链接给更多的朋友!

目录(?)[&#;]

一自定义倒计时控件TimerTextView二控件使用

前言:这几天博客积的有点多,工作也是忙的够呛.

先上本篇效果图:

就是自定义一个能倒计时的TextView控件,当我们点击start run按钮时,给他传进去一个时间数字,它自己开始倒计时,不需要外部任何干预。当点击Stop run按钮时,停止倒计时。

一、自定义倒计时控件——TimerTextViewandroid 倒计时控件(安卓好用的倒计时)

显然TimerTextView应该派生于TextView,因为他本就是显示一串Text,只是具有了自动更新的功能,这里的自动更新的实现当然只通过线程来实现了,所以要继承Runnable接口。所以它的定义应该是这样的:

[java] view plaincopyprint?public class TimerTextView extends TextView implements Runnable{ public TimerTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public void run() { //自动更新 } } 首先,要给外部提供一个函数,可以给它设置要开始倒计时的数字:[java] view plaincopyprint?private long mday, mhour, mmin, msecond;//天,小时,分钟,秒 [java] view plaincopyprint?public void setTimes(long[] times) { mday = times[0]; mhour = times[1]; mmin = times[2]; msecond = times[3]; } 然后要实现当前线程的开始和终止,相关实现是下面几个函数:[java] view plaincopyprint?private boolean run=false; //是否启动了 [java] view plaincopyprint?public boolean isRun() { return run; } public void beginRun() { this.run = true; run(); } public void stopRun(){ this.run = false; } 这里定义一个变量run来标识当前线程是否已经启动,如果没有启动,我们可以调用beginRun()来开始线程,在beginRun()函数中,调用run()开线程开始运行,在线程中,我们就要实现一秒更新一次当前数字了:[java] view plaincopyprint?@Override public void run() { //标示已经启动 if(run){ ComputeTime(); String strTime= mday &#;"天:"&#; mhour&#;"小时:"&#; mmin&#;"分钟:"&#;msecond&#;"秒"; this.setText(strTime); postDelayed(this, ); }else { removeCallbacks(this); } } 首先判断当前线程应该具有的状态,如果还是在跑着(即run变量为true),那就计算当前应该显示的时间(ComputeTime()函数),然后设置给自己。最后利用postDelayed(this,),来延长1秒后再运行一次。

如果用户调用了StopRun()函数,将run变量置为了FALSE,即用户要停止线程运行,这里,我们调用removeCallbacks(this)来终止当前线程。下面就是看看如何来计算当前要显示的时间的omputeTime()函数了:

[java] view plaincopyprint?private void ComputeTime() { msecond--; if (msecond < 0) { mmin--; msecond = ; if (mmin < 0) { mmin = ; mhour--; if (mhour < 0) { // 倒计时结束 mhour = ; mday--; } } } } 理解起来应该没什么难度,秒一次减一,如果减到0,一方面重置为,另一方面分钟要减一,当分钟减到0时,一方面分钟置为,一方面小时减一,天的计划一样,需要注意的是,一天是个小时哦,不是。OK啦,重写控件的部分就讲完了,下面列出这块的完整代码,供大家参考:[java] view plaincopyprint?public class TimerTextView extends TextView implements Runnable{ public TimerTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } private long mday, mhour, mmin, msecond;//天,小时,分钟,秒 private boolean run=false; //是否启动了 public void setTimes(long[] times) { mday = times[0]; mhour = times[1]; mmin = times[2]; msecond = times[3]; } /** * 倒计时计算 */ private void ComputeTime() { msecond--; if (msecond < 0) { mmin--; msecond = ; if (mmin < 0) { mmin = ; mhour--; if (mhour < 0) { // 倒计时结束,一天有个小时 mhour = ; mday--; } } } } public boolean isRun() { return run; } public void beginRun() { this.run = true; run(); } public void stopRun(){ this.run = false; } @Override public void run() { //标示已经启动 if(run){ ComputeTime(); String strTime= mday &#;"天:"&#; mhour&#;"小时:"&#; mmin&#;"分钟:"&#;msecond&#;"秒"; this.setText(strTime); postDelayed(this, ); }else { removeCallbacks(this); } } } 二、控件使用下面我们就在MainActivity中使用一下,先看看MainActivity的布局(activity_main.xml)

从最开头的演示中也可以看出,使用的是垂直布局,两个BTN,一个倒计时TextView

[html] view plaincopyprint?<LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.trytimerview.MainActivity" > <Button android:id="@&#;id/main_start_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="start run"/> <Button android:id="@&#;id/main_stop_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="stop run"/> <com.example.trytimerview.TimerTextView android:id="@&#;id/timer_text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="sp" android:textColor="#ff" android:gravity="center_horizontal" android:text="倒计时" /> </LinearLayout> 然后是在MainActivity中,先列出整体的代码,然后再细讲:[java] view plaincopyprint?public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化倒计时控件 final TimerTextView timerTextView = (TimerTextView)findViewById(R.id.timer_text_view); long[] times = {0,,5,}; timerTextView.setTimes(times); Button startBtn = (Button)findViewById(R.id.main_start_btn); Button stopBtn = (Button)findViewById(R.id.main_stop_btn); //开始倒计时 startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(!timerTextView.isRun()){ timerTextView.beginRun(); } } }); //停止倒计时 stopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(timerTextView.isRun()){ timerTextView.stopRun(); } } }); } } 这里首先是,初始化TimerTextView控件:

初始化为从个小时,5分钟,秒开始倒计时

[java] view plaincopyprint?final TimerTextView timerTextView = (TimerTextView)findViewById(R.id.timer_text_view); long[] times = {0,,5,}; timerTextView.setTimes(times); 然后当用户点击StartRun按钮时,先判断当前是否在运行,如果没在运行,就让它开始跑起来:[java] view plaincopyprint?startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(!timerTextView.isRun()){ timerTextView.beginRun(); } } }); 当用户点击Stop Run按钮时,停止运行:[java] view plaincopyprint?stopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(timerTextView.isRun()){ timerTextView.stopRun(); } } });

OK啦,这篇比较简单,代码量也比较小,就不再多说了。

如果这篇文章有帮到你,记得关注哦

源码下载地址: 谢谢。

android 图片点击效果的实现 一般的APP的图片都有会设置点击效果,在点击图片时上面加一个半透明的阴影效果。这个我们可以在res/drawable下定义一个selctor.xml,然后设置ImageView的src

Android屏幕适配全攻略(最权威的官方适配指导) 转自:

android快速开发--常用utils类 整理出个基本每个项目中都会使用的工具类,用于快速开发。1、日志工具类L.java[java]viewplaincopypackagecom.zhy.utils;importandroid.util.Log;/***Log统一管理类****/pu

标签: 安卓好用的倒计时

本文链接地址:https://www.jiuchutong.com/biancheng/371045.html 转载请保留说明!

上一篇:Android按钮点击监听事件的写法(android按钮点击效果的实验报告)

下一篇:android 图片点击效果的实现(android点击图片跳转页面)

  • 劳务合同印花税税目
  • 个人偶然所得税率多少
  • 装修行业专票的税率是多少
  • 一般纳税人简易计税可以抵扣进项税额吗
  • 贸易类公司做产品代理账务如何处理
  • 销售商品的会计分录现金折扣
  • 已经确认收入的售出商品发生销售退回时
  • 现金流量表关注指标
  • 冲回上年多提的费用会计分录
  • 合并报表盈余公积怎么提
  • 非货币性资产对外投资
  • 工资五险一金和税怎么处理
  • 补交以前年度增值税和滞纳金怎么开票
  • 用于集体福利的进项税额转出
  • 资本公积转增资本时应注意的问题主要包括哪些?
  • 支付工程款不得超60天
  • 1697508933
  • 受委托研发企业可以享受研发支出吗
  • 生产车间领用材料45000元,投入生产
  • 员工可以一起辞职吗
  • 跨年的费用冲回会计分录
  • 金税盘申请电子发票成功后怎样手工导入
  • php网站架设
  • 电力安装工程辅料有哪些
  • 苹果官网入口
  • Mtdacq.exe - Mtdacq是什么进程 有什么用
  • 吕宋岛以南坐落着21座极大的岛屿
  • 瓦尔德内尔精彩
  • 西班牙的藏红花好不好
  • 个人信息提供者
  • 其他综合收益与营业外收入的区别
  • 只申报个税不交社保
  • html与js之间如何配合
  • 模型未来的发展趋势
  • pgadmin配置
  • 存货成本核算方法有哪些
  • 预付账款借方怎么调平
  • c语言strncat函数用法
  • db2replace函数用法
  • 没有以前年度损益调整怎么办
  • 其他应收款资产类
  • 支付招标代理费的请示
  • 转账进公户
  • 营改增利息收入增值税
  • 不得扣除的税金啥意思
  • 成本发票未到如何结转成本
  • 分公司注销库存车怎么办
  • 公司在银行的贷款会计分录
  • 咋样理解
  • 应交税费进项税额转出是什么意思
  • 预付账款主要是什么
  • 执行企业会计准则和小企业会计准则的区别
  • 有哪些不动产
  • 首先我们先了解一下作者英语怎么说呢
  • 2023年职工社保缴费标准一览表
  • Excel导入Sqlserver数据库脚本
  • 备受大家关注的成语
  • win10预览版好用吗
  • 系统的虚拟内存可以清理吗
  • Mac怎么更改锁屏密码
  • linux配置光纤
  • win7系统如何关闭开机自动启动软件
  • 日历功能在哪里设置
  • windows8开机启动项设置
  • unity跨脚本调用函数
  • webpack使用ejs
  • jquery实现页面切换
  • 网页制作css怎么用
  • socket怎么用
  • numpy基础知识
  • unity3d 物理引擎
  • 卸载python后模块库还用卸载吗
  • 进口设备如何交税
  • 税务总局2017年11号公告第二条
  • 公司变更税务局
  • 上海小规模纳税人企业所得税
  • 房屋契税和维修基金是开发商交还是业主交
  • 购销合同印花税的计税依据怎么算
  • 国家税务北京税务局
  • 2021年福建医保什么时候交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设