ProgressBar与Handler的整合应用

 在android中进度条使用ProgressBar表示,用于向用户显示某个耗时操作完成的百分比     之ProgressBar与Handler的整合应用

1.在xml文件中通过<ProgressBar>标记添加,表示基本如下:

1 <ProgressBar        
2 android:id="@+id/progressBar1"        
style
="?android:attr/progressBarStyleHorizontal"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content" />

部分xml属性如下:

android:max-->设置进度条的最大值
android:progress-->指定进度条已经完成的进度值
android:progressDrawable-->设置进度条轨道的绘制形式

关于progressBar的style

style="?android:attr/progressBarStyleHorizontal"    细长水平进度条
style="?android:attr/progressBarStyleLarge"         大原型水平进度条

 setIndeterminate  设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值

代码如下

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    
tools:context=".MainActivity" >    
<TextView       
 android:id="@+id/tv1"        
android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    
<ProgressBar       
 android:id="@+id/pb"        
android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/tv1"        
android:visibility="gone" />    
<Button        
android:id="@+id/btn"       
 android:layout_width="wrap_content"        android:layout_height="wrap_content"        
android:text="点击"       
 android:layout_below="@id/pb" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends Activity {    
private TextView tv1;    private ProgressBar pb;    
private Button btn;    
private int count;
@Override    
protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                
tv1 = (TextView) findViewById(R.id.tv1);        
pb = (ProgressBar) findViewById(R.id.pb);        
btn = (Button) findViewById(R.id.btn);        
//调用setIndeterminate设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值        pb.setIndeterminate(false);                btn.setOnClickListener(new View.OnClickListener() {                        
@Override            
public void onClick(View v) {                
//点击按钮,ProgressBar显示                pb.setVisibility(View.VISIBLE);                
//指定ProgressBar最大值为100                pb.setMax(100);                
//指定初始值为0                pb.setProgress(0);                                
//开启线程,更改ProgressBar的值                
new Thread (new Runnable() {                                                                                
@Override public void run() { for (int i = 0; i
< 10; i++) { try { count = (i + 1)*20;
Thread.sleep(1000); //线程运行5秒后结束 if (i
== 4) {
Message msg
= new Message();
msg.what
= 0;
handle.sendMessage(msg);
break;
}else{ Message msg
= new Message();
msg.what
= 1;

handle.sendMessage(msg);
} } catch (Exception e) {
} } } }).start(); } }); } Handler handle
= new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0: tv1.setText("数据加载完毕"); //设置ProgressBar隐藏
pb.setVisibility(View.GONE); //线程中断

Thread.currentThread().interrupt();
break; case 1: if (!Thread.currentThread().interrupted()) {
pb.setProgress(count); //将进度显示在setText中
tv1.setText("
==================");

} break; default: break; } }; };

 下载:https://github.com/SamSarah1/AndroidDemo

转载于:https://www.cnblogs.com/SamSarah/p/4888853.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值