activity部分的代码:
MainActivity.java
package com.gdqy.demo;
//倒计时器
import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;//展示数字
//按钮多,通过接口的方式实现监听事件
public class MainActivity extends Activity implements android.view.View.OnClickListener {
//声明控件
private EditText input;
private TextView time;
private Button gettime,starttime,stoptime;
private int i = 0;//创建对象,倒计时
//创建计时器
private Timer timer = null;
private TimerTask task = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
}
//初始化放在初始化的方法中
//封装方法
private void initView(){
//寻找控件,获取控件
input = (EditText)findViewById(R.id.inputtime);
gettime =(Button)findViewById(R.id.gettime);
starttime =(Button)findViewById(R.id.start);
stoptime = (Button)findViewById(R.id.stop);
time =(TextView)findViewById(R.id.time);
gettime.setOnClickListener(this);
starttime.setOnClickListener(this);
stoptime.setOnClickListener(this);
}
//复写它的方法
/* 1方法重载
2方法复写
概念:1 方法名称相同,参数的个数或者类型不同
2 方法名称相同,参数的个数和类型相同,方法的访问权限不能更严格
使用范围:1 发生在同一个类中 2发生在继承关系中,是由子类进行复写*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.gettime:
//获取时间
time.setText(input.getText().toString());
i = Integer.parseInt(input.getText().toString());
break;
case R.id.start:
starttime();
break;
case R.id.stop:
stoptime();
break;
}
}
//创建Handler
private Handler mhandler = new Handler(){
public void handleMessage(Message msg){
//更新主ui
time.setText(msg.arg1+"");
starttime();
};
};
//创建开始和结束方法
public void starttime(){
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
i--;
Message message = mhandler.obtainMessage();
message.arg1 = i;
//发送消息
mhandler.sendMessage(message);
}
};
timer.schedule(task, 1000);//一秒减一
}
public void stoptime(){
//清除
timer.cancel();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
布局部分的代码:main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/inputtime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
<Button
android:id="@+id/gettime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取倒计时时间"/>
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始计时" />
<Button
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止计时" />
</LinearLayout>