本文实例为大家分享了Android实现淘宝倒计时的具体代码,供大家参考,具体内容如下
<强>一、效果图>强(这里为了方便我就没弄gif图了,功能是能动的)
<强>二,实现步骤强>
1。自定义倒计时控件,
包com.cqxxny.myapplication; 进口android.annotation.SuppressLint; 进口android.content.Context; 进口handler; 进口android.os.Message; 进口android.util.AttributeSet; 进口android.view.LayoutInflater; 进口android.view.View; 进口android.widget.LinearLayout; 进口android.widget.TextView; 进口android.widget.Toast; 进口java.util.Timer; 进口java.util.TimerTask;/* * *功能:倒计时工具类 *所属模块: *创建时间:2018/11/15 *功能描述: */@SuppressLint (“HandlerLeak”) 公开课RushBuyCountDownTimerView LinearLayout{延伸//小时,十位 私人TextView tv_hour_decade;//小时,个位 私人TextView tv_hour_unit;//分钟,十位 私人TextView tv_min_decade;//分钟,个位 私人TextView tv_min_unit;//秒,十位 私人TextView tv_sec_decade;//秒,个位 私人TextView tv_sec_unit; 私人上下文语境; 私人int hour_decade; 私人int hour_unit; 私人int min_decade; 私人int min_unit; 私人int sec_decade; 私人int sec_unit;//计时器 私人计时器计时; 私人处理程序处理程序=new处理程序(){ 公共空间handleMessage(消息味精){ 倒计时(); }; }; 公共RushBuyCountDownTimerView(上下文语境,AttributeSet attrs) { 超级(上下文,attrs); 这一点。上下文=上下文; LayoutInflater增压泵=(LayoutInflater)上下文 .getSystemService (Context.LAYOUT_INFLATER_SERVICE); 视图查看=inflater.inflate(出来。时间的推移,这个); tv_hour_decade=(TextView) view.findViewById (R.id.tv_hour_decade); tv_hour_unit=(TextView) view.findViewById (R.id.tv_hour_unit); tv_min_decade=(TextView) view.findViewById (R.id.tv_min_decade); tv_min_unit=(TextView) view.findViewById (R.id.tv_min_unit); tv_sec_decade=(TextView) view.findViewById (R.id.tv_sec_decade); tv_sec_unit=(TextView) view.findViewById (R.id.tv_sec_unit); }/* * * * @Description:开始计时 * @param * @return无效 * @throws */公共空间开始(){ 如果(计时器==null) { 计时器=new计时器(); 计时器。日程安排(新TimerTask () { @Override 公共空间run () { handler.sendEmptyMessage (0); } },0,1000); } }/* * * * @Description:停止计时 * @param * @return无效 * @throws */公共空间停止(){ 如果(计时器!=null) { timer.cancel (); 计时器=零; } }/* * * @throws例外 * * @Description:设置倒计时的时长 * @param * @return无效 * @throws */公共空间凝固时间(int, int, int sec) { 如果(60小时祝辞=| |分钟祝辞=60 | |交会祝辞=60 | |小时& lt;0 | |分钟& lt;0 | |秒& lt;0){ 把新的RuntimeException(“时间格式错误,请检查你的代码”); } hour_decade=小时/10; hour_unit - hour_decade * 10=小时; min_decade=10分钟/; min_unit=10 min - min_decade *; sec_decade=秒/10; sec_unit=秒- sec_decade * 10; tv_hour_decade。setText (hour_decade + " "); tv_hour_unit。setText (hour_unit + " "); tv_min_decade。setText (min_decade + " "); tv_min_unit。setText (min_unit + " "); tv_sec_decade。setText (sec_decade + " "); tv_sec_unit。setText (sec_unit + " "); }/* * * * @Description:倒计时 * @param * @return布尔 * @throws */私人空间倒计时(){ 如果(isCarry4Unit (tv_sec_unit)) { 如果(isCarry4Decade (tv_sec_decade)) { 如果(isCarry4Unit (tv_min_unit)) { 如果(isCarry4Decade (tv_min_decade)) { 如果(isCarry4Unit (tv_hour_unit)) { 如果(isCarry4Decade (tv_hour_decade)) { 吐司。makeText(上下文”,时间到”了, Toast.LENGTH_SHORT),告诉(); 停止(); } } } } } } }/* * * * @Description:变化十位,并判断是否需要进位 * @param * @return布尔 * @throws */私人布尔isCarry4Decade (TextView电视){ .toString int时间=Integer.valueOf (tv.getText () ()); 时间=- 1; 如果时间& lt;0){ 时间=5; 电视。setText(时间+ " "); 返回true; 其他}{ 电视。setText(时间+ " "); 返回错误; } }/* * * * @Description:变化个位,并判断是否需要进位 * @param * @return布尔 * @throws */私人布尔isCarry4Unit (TextView电视){ .toString int时间=Integer.valueOf (tv.getText () ()); 时间=- 1; 如果时间& lt;0){ 时间=9; 电视。setText(时间+ " "); 返回true; 其他}{ 电视。setText(时间+ " "); 返回错误; } } }Android实现淘宝倒计时功能