介绍
这期内容当中小编将会给大家带来有关怎么在Android中通过自定义TimeButton实现倒计时按钮,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
首先新建一个应用程序。类继承于应用
package com.example.xuboyu.myapplication; import java.util.Map; , import android.app.Application; , public class  App extends Application  { ,//用于存放倒计时时间 ,public static  Map<字符串,Long>,地图; }
然后编写TimeButton。类继承于按钮
package com.example.xuboyu.myapplication; , , import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; , import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; import handler; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; ,/* * ,*倒计时按钮 ,* @author bnuzlbs-xuboyu  2017/4/5。 ,*注意把该类的onCreate () onDestroy()和活动的onCreate () onDestroy()同步处理 ,*/public class  TimeButton extends Button  implements OnClickListener { ,private long lenght =, 60, *, 1000;//,倒计时长度,这里给了默认60秒 ,private String textafter =,“秒后重新获取~“; ,private String textbefore =,“点击获取验证码~“; ,private int  colorafter; ,private int  colorbefore; ,private final  String TIME =,“time"; ,private final  String CTIME =,“ctime"; ,private OnClickListener  mOnclickListener; ,private Timer t; tt, private TimerTask ; ,private long 时间; ,Map<字符串,Long>, map =, new HashMap<字符串,,Long> (); , ,public TimeButton (Context 上下文),{ ,超级(上下文); ,setOnClickListener(这个); , ,} , ,public TimeButton (Context 上下文,AttributeSet attrs), { ,超级(上下文,attrs); ,setOnClickListener(这个); ,} , ,@SuppressLint (“HandlerLeak") ,Handler han =, new 处理程序(),{ ,public void  handleMessage (android.os.Message 味精),{ TimeButton.this.setText才能(time /, 1000, +, textafter); -=time 才能;1000; if 才能;(time & lt;, 0), { TimeButton.this.setEnabled才能(真正的); TimeButton.this.setText才能(textbefore); clearTimer才能(); ,,} ,}; ,}; , ,private void  initTimer (), {=,time 长度;=,,t  new 计时器();=,,tt  new TimerTask (), { , @Override才能 public 才能;void 运行(),{ Log.e才能(“xuboyu",, time /, 1000, +,““); han.sendEmptyMessage才能(0 x01);//十六进制的数字1 ,,} ,}; ,} , ,private void  clearTimer (), { ,if (tt !=, null), { tt.cancel才能(); 时间=tt 才能;零; ,} ,if (t !=, null) t.cancel才能();=,t 零; ,} , ,@Override ,public void  setOnClickListener (OnClickListener l), { ,if (l instanceof  TimeButton), { super.setOnClickListener才能(l); 其他,} l=this.mOnclickListener 才能;; ,} , ,@Override ,public void  onClick (View v), { ,if (mOnclickListener !=, null) mOnclickListener.onClick才能(v); ,initTimer (); 1000年,this.setText (time /,, +, textafter); ,this.setEnabled(假); ,t.schedule (tt, 0, 1000); ,//t.scheduleAtFixedRate(任务,时间延迟,大敌;;时期); ,} ,/* * ,*和活动的onDestroy()方法同步 ,*/,public void  onDestroy (), { ,if (App.map ==, null) App.map 才能=,new HashMap<字符串,,Long> (); ,App.map.put(时间,时间); ,App.map.put (CTIME, System.currentTimeMillis ()); ,clearTimer (); ,Log.e (“xuboyu",,“onDestroy"); ,} ,/* * ,*和活动的onCreate()方法同步 ,*/,public void  onCreate (Bundle 包),{ ,Log.e (“xuboyu:倒计时相关“,,App.map +,““); ,if (App.map ==, null) 返回才能; ,if (App.map.size (), & lt;=, 0)//,这里表示没有上次未完成的计时 返回才能; ,long time =, System.currentTimeMillis(),安康;App.map.get (CTIME) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在Android中通过自定义TimeButton实现倒计时按钮