ProgressBar结合线程的简单用例


一个关于ProgressBar的简单程序,做项目的时候很多时候都没有考虑到用progressbar,但实际上这样的用户体验不好,拿着程序也不知道它到底是“死”了还是在后台慢慢运行,所以特地看了看,progressbar通常结合线程使用(可能是handler消息推送、用户另起线程或者程序的UI线程),不过自己的线程实在忘挺多的了。。。而且当初也不是学得很好。。。希望多写关于它的东东好更好地理解并活用它吧。

推荐阅读:

Android ProgressBar进度条的使用

Android游戏开发系统控件-ProgressBar

Android --- Handler 多线程通信示例(ProgressBar) 

Android UI之ProgressBar(进度条)

Android自定义圆形ProgressBar半径大小

关于ProgressBar的知识点如下:

 在xml的设置中可以设置进度条的样式
 小圆形:style="?android:attr/progressBarStyleSmall"
 大圆形:style="?android:attr/progressBarStyleLarge"
 条形:    style="?android:attr/progressBarStyleHorizontal"
 android:max 设置进度条最大进度值
 android:progress 设置进度条初始进度值
 android:secondaryProgress 设置底层(浅色)进度值
在xml文件中加入ProgressBar空间并在主Activity中调用即可~
以后学好再进行补充和修改~不过这样应该可以简单理解程序的运行~

public class ProgressActivity extends Activity implements Runnable {
    /** Called when the activity is first created. */
    private Thread thread;
    private ProgressBar pb ;
    private boolean state ;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        pb = (ProgressBar) findViewById(R.id.pb);
        /**实例化线程对象*/
        thread = new Thread(this);
        thread.start();
    }
                 
    /**实现Runnable接口抽象函数*/
    public void run(){
        while(true){
            int currentX = pb.getProgress();
            int currentM = pb.getMax();
            int belowX = pb.getSecondaryProgress();
            if(state==false){
                if(currentX >= currentM){
                    state = true;
                }else{
                    pb.setProgress(currentX+1);
                    pb.setSecondaryProgress(belowX+1);
                }
            }else{
                if(currentX <= 0){
                    state = false;
                }else{
                    pb.setProgress(currentX-1);
                    pb.setSecondaryProgress(belowX-1);
                }
            }   
            try{
                Thread.sleep(50);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
        }
    }
}

相关内容

    暂无相关文章