您的位置:首页 > 移动开发 > Android开发

Android学习第六课 计时器小应用

2016-03-13 13:32 495 查看
算一算又有很多天没有写过总结了,最近不知道一直在忙些什么,时间就这样过去了,今天写了一个关于倒计时的小应用,算是把关于线程的东西进行了一个回顾。

首先是一个界面,这个因为只是为了复习知识点,界面就是最丑的白色型界面。


然后就是倒计时的逻辑

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//将各大控件进行初始化,并且设计控件的点击动作
init();

}

public void init() {
inputtime = (EditText) findViewById(R.id.inputtime);
gettime = (Button) findViewById(R.id.gettime);
starttime = (Button) findViewById(R.id.starttime);
stoptime = (Button) findViewById(R.id.stoptime);
time = (TextView) findViewById(R.id.time);
gettime.setOnClickListener(this);
starttime.setOnClickListener(this);
stoptime.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.gettime:
//将输入的数字保存下来,并且将其转换成string类型显示在TextView里面
time.setText(inputtime.getText().toString());
//将输入的字符串转换成int型,传给i
i = Integer.parseInt(inputtime.getText().toString());
break;

case R.id.starttime:
//启动倒计时
starttime();
break;

case R.id.stoptime:
//停止倒计时
stoptime();
break;
}
}

// 使用handle(消息处理类)机制来传递消息
private Handler mhandle = new Handler(){
//对消息进行处理
public void handleMessage(Message msg) {
//得到时间,将其在textview中显示
time.setText(msg.arg1+"");
//运用了递归的思想,不停的调用自己,实现倒计时的目的
starttime();
};

};

public void starttime() {
timer = new Timer();
task = new TimerTask() {

@Override
public void run() {
// 倒计时时间自减
i--;
// 通过message对象获得相应的信息
Message message = mhandle.obtainMessage();
//message自带的参数,用于存放整型的参数
message.arg1 = i;
//发送 消息
mhandle.sendMessage(message);
}
};
timer.schedule(task, 1000);
}

private void stoptime() {
timer.cancel();
}


这里面有一个注意的地方就是
time.setText(msg.arg1+"");
笔者在这里犯了一个小错误,这句话是为了在textview中显示倒计时的时间,但是setText的参数必须是字符串类型,当时笔者忘记转化,导致程序一直出错。这里提醒一下。最后的效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android