Android 倒计时

自定义类
包com.xiao.countdownboard;

进口java.util.Timer中的中;
进口java.util.TimerTask中的中;


进口android.content.Context;
进口android.os.Handler;
进口android.os.Message;
进口android.util.AttributeSet;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.widget.LinearLayout;
进口android.widget.TextView;

公共类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;

	私人上下文的背景下;
	
	私人的TextView的timer_state;

	私人诠释hour_decade;
	私人诠释.MIN_UNIT;
	私人诠释min_decade;
	私人诠释min_unit;
	私人诠释sec_decade;
	私人诠释sec_unit;

	私人定时器定时;

	私人StopTimer STIMER;
	私人处理程序处理程序=新的处理程序(){

		公共无效的的handleMessage(信息MSG){
			countDown方法方法();
		};
	};

	公共RushBuyCountDownTimerView(上下文的背景下,ATTRS的AttributeSet中){
		超(背景下,ATTRS);

		this.context =背景;
		LayoutInflater充气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		查看查看= inflater.inflate(R.layout.shop_coupon_timer,这一点);
		tv_hour_decade =(TextView的中)v​​iew.findViewById(R.id.tv_hour_decade);
		tv_hour_unit =(TextView的中)v​​iew.findViewById(R.id.tv_hour_unit);
		tv_min_decade =(TextView的中)v​​iew.findViewById(R.id.tv_min_decade);
		tv_min_unit =(TextView的中)v​​iew.findViewById(R.id.tv_min_unit);
		tv_sec_decade =(TextView的中)v​​iew.findViewById(R.id.tv_sec_decade);
		tv_sec_unit =(TextView的中)v​​iew.findViewById(R.id.tv_sec_unit);
		timer_state =(TextView的中)v​​iew.findViewById(R.id.timer_state);
	}
	
	公共无效的的setState(INT ID){
		timer_state.setBackground(getResources()getDrawable(ID));
	}

	/ **
	 * 
	 * @描述:开始计时
	 * @参数
	 * @返回无效
	 * @throws
	 * /
	公共无效启动(){

		如果(定时器== NULL){
			定时器=新的定时器();
			timer.schedule(新的TimerTask的(){

				@Override
				公共无效的运行(){
					handler.sendEmptyMessage(0);
				}
			},0,1000);
		}
	}

	公共无效setCompleteListener(StopTimer STIMER){
		this.sTimer = STIMER;
	};
	/ **
	 * 
	 * @描述:停止计时
	 * @参数
	 * @返回无效
	 * @throws
	 * /
	公共无效停止(){
		如果(定时器!= NULL){
			timer.cancel();
			定时器= NULL;
			sTimer.complete();
		}
	}

	/ **
	 * @throws异常
	 * 
	 * @描述:设置倒计时的时长
	 * @参数
	 * @返回无效
	 * @throws
	 * /
	公共无效的的setTime(INT小时,INT分钟,INT秒){

		如果(小时> = 60 ||分钟> = 60 ||秒> = 60 ||小时<0 ||分钟<0 ||秒<0){
			抛出新的RuntimeException的(“时间格式错误,请检查你的代码”);
		}

		hour_decade =小时/ 10;
		.MIN_UNIT =小时 -  hour_decade * 10;

		min_decade =分钟/ 10;
		min_unit =分钟 -  min_decade * 10;

		sec_decade =秒/ 10;
		sec_unit =秒 -  sec_decade * 10;

		tv_hour_decade.setText(hour_decade +“”);
		tv_hour_unit.setText(.MIN_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 +“”);

	}

	/ **
	 * 
	 * @描述:倒计时
	 * @参数
	 * @返回布尔
	 * @throws
	 * /
	私人无效countDown方法方法(){

		如果(isCarry4Unit(tv_sec_unit)){
			如果(isCarry4Decade(tv_sec_decade)){

				如果(isCarry4Unit(tv_min_unit)){
					如果(isCarry4Decade(tv_min_decade)){

						如果(isCarry4Unit(tv_hour_unit)){
							如果(isCarry4Decade(tv_hour_decade)){
								停止();
							}
						}
					}
				}
			}
		}
	}

	/ **
	 * 
	 * @描述:变化十位,并判断是否需要进位
	 * @参数
	 * @返回布尔
	 * @throws
	 * /
	私人布尔isCarry4Decade(TextView中的电视){

		INT时间= Integer.valueOf(tv.getText()的的toString());
		时间=时间 -  1;
		如果(时间<0){
			时间= 5;
			tv.setText(时间+“”);
			返回真;
		} {其他
			tv.setText(时间+“”);
			返回FALSE;
		}

	}

	/ **
	 * 
	 * @描述:变化个位,并判断是否需要进位
	 * @参数
	 * @返回布尔
	 * @throws
	 * /
	私人布尔isCarry4Unit(TextView中的电视){

		INT时间= Integer.valueOf(tv.getText()的的toString());
		时间=时间 -  1;
		如果(时间<0){
			时间= 9;
			tv.setText(时间+“”);
			返回真;
		} {其他
			tv.setText(时间+“”);
			返回FALSE;
		}

	}

}
自定义
<?XML版本=“1.0”编码=“UTF-8”?>
<RelativeLayout的的XMLNS:安卓=“HTT号码://schemas.android.com/apk/res/android”
    机器人:layout_width =“WRAP_CONTENT”
    机器人:layout_height =“WRAP_CONTENT”
    机器人:方向=“垂直”>

    <TextView中的
        机器人:ID =“@ + ID / timer_state”
        机器人:layout_width =“WRAP_CONTENT”
        机器人:layout_height =“WRAP_CONTENT”
        机器人:layout_alignParentTop =“真”
        机器人:layout_centerHorizo​​ ntal =“真”
        机器人:背景=“@可绘制/ shop_timer_dao”/>

    <的的LinearLayout
        机器人:layout_width =“WRAP_CONTENT”
        机器人:layout_height =“WRAP_CONTENT”
        机器人:layout_below =“@ ID / timer_state”
        机器人:layout_marginTop =“ -  1DP”
        机器人:背景=“@可绘制/ shop_coupon_bg”
        机器人:方向=“横向”>

        <的的LinearLayout
            机器人:layout_width =“WRAP_CONTENT”
            机器人:layout_height =“WRAP_CONTENT”
            机器人:layout_weight =“1”
            机器人:方向=“垂直”
            机器人:填充=“3DP”>

            <TextView中的
                机器人:layout_width =“WRAP_CONTENT”
                机器人:layout_height =“WRAP_CONTENT”
                机器人:文本=“剩”
                机器人:文字颜色=“@色/白”
                机器人:TEXTSIZE =“9SP”/>

            <TextView中的
                机器人:layout_width =“WRAP_CONTENT”
                机器人:layout_height =“WRAP_CONTENT”
                机器人:文本=“余”
                机器人:文字颜色=“@色/白”
                机器人:TEXTSIZE =“9SP”/>
        </ LinearLayout中中>

        <TextView中的
            机器人:ID =“@ + ID / tv_hour_decade”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginRight =“2DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>

        <TextView中的
            机器人:ID =“@ + ID / tv_hour_unit”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>

        <TextView中的
            机器人:layout_width =“WRAP_CONTENT”
            机器人:layout_height =“WRAP_CONTENT”
            机器人:layout_gravity =“center_vertical”
            机器人:填充=“2DP”
            机器人:文本=“:”
            机器人:文字颜色=“@色/白”/>

        <TextView中的
            机器人:ID =“@ + ID / tv_min_decade”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginRight =“2DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>

        <TextView中的
            机器人:ID =“@ + ID / tv_min_unit”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>

        <TextView中的
            机器人:layout_width =“WRAP_CONTENT”
            机器人:layout_height =“WRAP_CONTENT”
            机器人:layout_gravity =“center_vertical”
            机器人:填充=“2DP”
            机器人:文本=“:”
            机器人:文字颜色=“@色/白”/>

        <TextView中的
            机器人:ID =“@ + ID / tv_sec_decade”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginRight =“2DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>

        <TextView中的
            机器人:ID =“@ + ID / tv_sec_unit”
            风格=“@风格/ CouponTimerViewStyle”
            机器人:layout_gravity =“center_vertical”
            机器人:layout_marginBottom =“4DP”
            机器人:layout_marginRight =“5DP”
            机器人:layout_marginTop =“4DP”
            机器人:背景=“@可绘制/ shop_coupon_text_bg”
            机器人:填充=“3DP”/>
    </ LinearLayout中中>

</ RelativeLayout的的>

使用代码

包com.xiao.countdownboard;

进口android.os.Bundle;
进口android.app.Activity;
进口android.view.Menu;

公共类MainActivity延伸活动{
	RushBuyCountDownTimerView seckillView;
	@Override
	保护无效的的onCreate(捆绑savedInstanceState){
		super.onCreate(savedInstanceState);
		的的setContentView(R.layout.activity_main);
		seckillView =(RushBuyCountDownTimerView)findViewById(R.id.shoptimer);
		INT []日期= getHourMinSec(10000);
		seckillView.setTime(日期[0]日期[1],日[2]);
		seckillView.start();
	}

	//获得格式为时分秒
	公共静态INT [] getHourMinSec(长T){
		INT []日期=新INT [3];
		日期[0] = Integer.valueOf(T / 3600 +“”);
		日期[1] = Integer.valueOf((T  - 日期[0] * 3600)/ 60 +“”);
		日期[2] = Integer.valueOf(T%60 +“”);
		返回日期;
	}
}
源码http://download.csdn.net/detail/u010775074/9014503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值