JavaShuo
栏目
标签
Handler和ProgressBar实现进度条的开始,暂停,中止,后退和循环
时间 2019-12-17
标签
handler
progressbar
实现
进度
开始
暂停
中止
后退
循环
繁體版
原文
原文链接
一,涉及的handler类方法
html
1,
java
post
(
Runnable
r)
android
Causes the Runnable r to be added to the message queue.将要执行的线程对象加到队列当中
2,
removeCallbacks
(
Runnable
r)
Remove any pending posts of Runnable r that are in the message queue.移除队列当中未执行的线程对象
3,
postDelayed
(
Runnable
r, long delayMillis)
Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
将要执行的线程对象放入到队列当中,待时间结束后,运行制定的线程对象
二,编写程序
程序效果:实现进度条的开始,暂停,中止,后退和循环
主activity
[java]
view plain
copy
package
com.song;
import
android.app.Activity;
import
android.os.Bundle;
import
android.os.Handler;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.ProgressBar;
public
class
C93_Handler3Activity
extends
Activity {
/** Called when the activity is first created. */
ProgressBar bar;
Button start,pause,back,stop;
Handler handler;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
handler=
new
Handler();
bar=(ProgressBar)findViewById(R.id.bar);
start=(Button)findViewById(R.id.start);
pause=(Button)findViewById(R.id.pause);
back=(Button)findViewById(R.id.back);
stop=(Button)findViewById(R.id.stop);
start.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
// TODO Auto-generated method stub
//开始按钮,将要执行的线程对象放到队列当中
handler.post(runnable);
}
});
pause.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
// TODO Auto-generated method stub
//暂停按钮,删除队列当中未执行的线程对象
handler.removeCallbacks(runnable);
}
});
back.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
// TODO Auto-generated method stub
if
(prolength!=
0
)
{
prolength=bar.getProgress()-
1
;
bar.setProgress(prolength);
setTitle(String.valueOf(prolength));
}
}
});
stop.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
// TODO Auto-generated method stub
handler.removeCallbacks(runnable);
bar.setProgress(
0
);
setTitle(String.valueOf(
0
));
}
});
}
int
prolength=
0
;
//定义进程度
//定义线程
Runnable runnable=
new
Runnable() {
@Override
public
void
run() {
// TODO Auto-generated method stub
prolength=bar.getProgress()+
1
;
bar.setProgress(prolength);
setTitle(String.valueOf(prolength));
//若是进度小于100,则延迟1000毫秒以后重复执行runnable
if
(prolength<
100
)
{
handler.postDelayed(runnable,
1000
);
}
//不然,都置零,线程从新执行
else
{
bar.setProgress(
0
);
setTitle(String.valueOf(
0
));
handler.post(runnable);
}
}
};
}
布局文件
[html]
view plain
copy
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:orientation
=
"vertical"
>
<
ProgressBar
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:id
=
"@+id/bar"
style
=
"
@android
:style/Widget.ProgressBar.Horizontal"
/>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:orientation
=
"horizontal"
>
<
Button
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"2"
android:id
=
"@+id/start"
android:text
=
"开始"
/>
<
Button
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"2"
android:id
=
"@+id/pause"
android:text
=
"暂停"
/>
<
Button
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"2"
android:id
=
"@+id/back"
android:text
=
"后退"
/>
<
Button
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_weight
=
"2"
android:id
=
"@+id/stop"
android:text
=
"中止"
/>
</
LinearLayout
>
</
LinearLayout
>
显示效果
相关文章
1.
如何将进度条进行开始和暂停的操作?
2.
在spring中实现quartz的动态调度(开始、暂停、中止等)
3.
WPF控制动画开始、停止、暂停和恢复
4.
Android中使用ProgressBar实现进度条
5.
Unity中游戏暂停和开始怎么实现?
6.
ProgressBar(进度条)的实例
7.
C#中的进度条ProgressBar
8.
MFC 通过定时器实现space键的暂停和开始
9.
ProgressBar--进度条
10.
ProgressBar进度条
更多相关文章...
•
现实生活中的 XML
-
XML 教程
•
ASP.NET Razor - C# 循环和数组
-
ASP.NET 教程
•
☆基于Java Instrument的Agent实现
•
TiDB 在摩拜单车在线数据业务的应用和实践
相关标签/搜索
中和
暂停
停止
SSM和Redis实现
循环
progressbar
饱和度
退现
后退
退后
XLink 和 XPointer 教程
红包项目实战
Spring教程
调度
后端
注册中心
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
升级Gradle后报错Gradle‘s dependency cache may be corrupt (this sometimes occurs
2.
Smarter, Not Harder
3.
mac-2019-react-native 本地环境搭建(xcode-11.1和android studio3.5.2中Genymotion2.12.1 和VirtualBox-5.2.34 )
4.
查看文件中关键字前后几行的内容
5.
XXE萌新进阶全攻略
6.
Installation failed due to: ‘Connection refused: connect‘安卓studio端口占用
7.
zabbix5.0通过agent监控winserve12
8.
IT行业UI前景、潜力如何?
9.
Mac Swig 3.0.12 安装
10.
Windows上FreeRDP-WebConnect是一个开源HTML5代理,它提供对使用RDP的任何Windows服务器和工作站的Web访问
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
如何将进度条进行开始和暂停的操作?
2.
在spring中实现quartz的动态调度(开始、暂停、中止等)
3.
WPF控制动画开始、停止、暂停和恢复
4.
Android中使用ProgressBar实现进度条
5.
Unity中游戏暂停和开始怎么实现?
6.
ProgressBar(进度条)的实例
7.
C#中的进度条ProgressBar
8.
MFC 通过定时器实现space键的暂停和开始
9.
ProgressBar--进度条
10.
ProgressBar进度条
>>更多相关文章<<