简单开始,暂停,继续的倒计时实现
2016-06-20 23:39
483 查看
关于实现“倒计时”功能的代码(包括开始、暂停、继续功能):
1、首先在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id;
2、在activity中定义一个int类型计时的初始值,和boolean类型的判断值(用于修改button按钮的显示文本的修改)
3、在activity中添加button的点击事件OnClickListener,重写onclick方法
4、用if语句判断,修改button按钮的显示的文本(“暂停或继续”)
5、这里使用两种方法实现倒计时,具体代码如下:
private TextView
text01;
private Button
btn01;
private
int index = 20;
private
boolean isflag;
@Override
protected
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text01 = (TextView) findViewById(R.id.text01);
btn01 = (Button) findViewById(R.id.btn);
// btn01.setText("开始");
btn01.setOnClickListener(new OnClickListener() {
//方法一(工作线程给主线程发送消息):
@Override
public
void onClick(View v) {
if (!isflag) {
btn01.setText("暂停");
isflag = true;
final Handler
h = new Handler()
{//关联的是主线程
public
void handleMessage(Message msg) {
text01.setText(String.valueOf(msg.what));
};
};
new Thread() {//新建工作线程
public
void run() {
while (index >= 0 &&
isflag) {
h.sendEmptyMessage(index);//
工作线程给主线程发消息
index--;
try {sleep(1000);}
catch (InterruptedException
e) {}
}
};
}.start();//启动线程
} else {
isflag = false;
btn01.setText("继续");
}
}
//方法二:
@Override
public
void onClick(View v) {
if (!isflag) {
btn01.setText("暂停");
isflag = true;
final Handler
h = new Handler();//
默认关联当前线程(主线程)
h.postDelayed(new Runnable() {
public
void run() {
if (index >= 0 &&
isflag) {
text01.setText(String.valueOf(index));
index--;
h.postDelayed(this, 1000);
}
}
}, 1000);
}
});
}
1、首先在布局文件中添加一个TextView和Button控件,并在onCreate方法中获得到TextView和Button的id;
2、在activity中定义一个int类型计时的初始值,和boolean类型的判断值(用于修改button按钮的显示文本的修改)
3、在activity中添加button的点击事件OnClickListener,重写onclick方法
4、用if语句判断,修改button按钮的显示的文本(“暂停或继续”)
5、这里使用两种方法实现倒计时,具体代码如下:
private TextView
text01;
private Button
btn01;
private
int index = 20;
private
boolean isflag;
@Override
protected
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text01 = (TextView) findViewById(R.id.text01);
btn01 = (Button) findViewById(R.id.btn);
// btn01.setText("开始");
btn01.setOnClickListener(new OnClickListener() {
//方法一(工作线程给主线程发送消息):
@Override
public
void onClick(View v) {
if (!isflag) {
btn01.setText("暂停");
isflag = true;
final Handler
h = new Handler()
{//关联的是主线程
public
void handleMessage(Message msg) {
text01.setText(String.valueOf(msg.what));
};
};
new Thread() {//新建工作线程
public
void run() {
while (index >= 0 &&
isflag) {
h.sendEmptyMessage(index);//
工作线程给主线程发消息
index--;
try {sleep(1000);}
catch (InterruptedException
e) {}
}
};
}.start();//启动线程
} else {
isflag = false;
btn01.setText("继续");
}
}
//方法二:
@Override
public
void onClick(View v) {
if (!isflag) {
btn01.setText("暂停");
isflag = true;
final Handler
h = new Handler();//
默认关联当前线程(主线程)
h.postDelayed(new Runnable() {
public
void run() {
if (index >= 0 &&
isflag) {
text01.setText(String.valueOf(index));
index--;
h.postDelayed(this, 1000);
}
}
}, 1000);
}
});
}
相关文章推荐
- 不仅是工程师要看!
- Swift - 文本输入框(UITextField)的用法
- 团队项目(二)
- 解决VS版本【加载......符号缓慢】的问题
- thinkphp3.2【SQL各种查询条件&&select()方法原理追踪】
- 详解SPI中的极性CPOL和相位CPHA
- c++ String 转 char*
- ActiveMQ介绍和资料集合
- 滚动选择器
- Leetcode no. 236
- Nodejs-Koa是一个干净的框架
- js常用代码记录
- 做一个会PS切图的前端开发
- Swift - 文本标签(UILabel)的用法
- Android官方Media Playback中文教程
- 快播“罪”了吗?
- 常用三维模型文件结构解析
- 分布式ActiveMQ集群
- RxJava zip操作符在Android中的实际使用场景
- spark作业解析[转载]