实现动态更新ProgressBar的水平进度条

实现动态更新ProgressBar的水平进度条:


布局文件progressBar.xml如下:



    
        
        

        
        

        
        
    
    

    
    

MyprogressBar.java代码如下:

package com.example.lenovo.photobrowse;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Random;

/**
 * Created by lenovo on 2016/5/24.
 */

public class MyprogessBar extends AppCompatActivity {

    //该程序模拟填充长度为100的数组
    private int[] data = new int[100];
    private int hasData = 0;
    //记录progressBar的完成程度
    private int status = 0;

    private ProgressBar bar1;
    private ProgressBar bar2;
    private TextView tv;

    //创建一个负责更新进度的hander
    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if(msg.what == 0x111){
                bar1.setProgress(status);
                bar2.setProgress(status);
                tv.setText("已完成"+status+"%");
                if(status==100)
                    Toast.makeText(MyprogessBar.this,"以下载完成",Toast.LENGTH_SHORT).show();
            }
        }
    };

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progresssbar_layout);

        bar1 = (ProgressBar) findViewById(R.id.bar1);
        bar2 = (ProgressBar) findViewById(R.id.bar4);
        tv = (TextView) findViewById(R.id.tv1);

        //启动线程来执行任务
        new Thread(){
            @Override
            public void run() {
                while(status<100) {
                    //获取耗时操作的完成百分比
                    status = doWork();

                    //发送消息
                    mHandler.sendEmptyMessage(status);
                }
            }
        }.start();

    }
    //模拟一个耗时的操作
    private int doWork() {
        data[hasData++] = (int)(Math.random()*100);

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return hasData;
    }
}


总结:本例通过填充数组里得内容结合线程里的Sleep来实现数据更新,总结:本例通过填充数组里得内容结合线程里的Sleep来实现数据更新。


你可能感兴趣的:(Android)