Android ProgressBar 进度条

来源:互联网 发布:梦里花落知多少全文 编辑:程序博客网 时间:2024/04/25 10:04

Android系统提供了两大类进度条样式,长形进度条和圆形进度条,下面我就讲解下长形进度条如何使用,效果图如下:

布局文件main.xml文件如下:

    <?xml version="1.0" encoding="utf-8"?>      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"          android:orientation="vertical"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          >          <ProgressBar               android:id="@+id/pb"               android:layout_marginLeft="10sp"              android:layout_width="300sp"               android:layout_height="20sp"              android:layout_marginTop="10sp"              style="?android:attr/progressBarStyleHorizontal"          />          <Button              android:id = "@+id/startButton"              android:layout_marginTop="10sp"              android:layout_marginLeft="20sp"              android:layout_width="150sp"               android:layout_height="40sp"              android:text="Start"          />          <Button              android:id = "@+id/endButton"              android:layout_marginTop="10sp"              android:layout_marginLeft="20sp"              android:layout_width="150sp"               android:layout_height="40sp"              android:text="End"          />      </LinearLayout>    

Activity代码如下:

    package nyl.pbdemo;             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 Main extends Activity {          private Button startButton;          private Button endButton;          private ProgressBar pb;          private int process_value = 500;                 //创建Handler对象          private Handler handler = new Handler();                   @Override          public void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.main);                       //根据id获得控件对象              startButton = (Button)findViewById(R.id.startButton);              endButton = (Button)findViewById(R.id.endButton);                       //为控件设置监听器              startButton.setOnClickListener(new StartButtonListener());              endButton.setOnClickListener(new EndButtonListener());                     pb = (ProgressBar) findViewById(R.id.pb);                     //设置初始值和最大值              pb.setProgress(500);              pb.setMax(pb.getMax());          }                   class StartButtonListener implements OnClickListener{              @Override              public void onClick(View v) {                  //调用Handler的post()方法,将要执行的线程对象放到队列当中                  handler.post(updateThread);              }          }                   class EndButtonListener implements OnClickListener{              @Override              public void onClick(View v) {                  //调用Handler的removeCallbacks()方法,删除队列当中未执行的线程对象                  handler.removeCallbacks(updateThread);              }          }                   //新建一个线程对象          Runnable updateThread = new Runnable(){              //将要执行的操作写在线程对象的run方法当中              public void run() {                  if (pb.getProgress() > 0) {                      //进度条的值                      process_value -= 1;                      pb.setProgress(process_value);                  }                         //调用Handler的postDelayed()方法                  //这个方法的作用是:将要执行的线程对象放入到队列当中,待时间结束后,运行制定的线程对象                  //第一个参数是Runnable类型:将要执行的线程对象                  //第二个参数是long类型:延迟的时间,以毫秒为单位                  handler.postDelayed(updateThread, 200);              }          };      }   



原创粉丝点击