ProgressBar(进度条)的使用和方法

image.png

image.png

activity:

package com.example.myapplication;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;

import java.lang.ref.WeakReference;

public class MainActivity extends AppCompatActivity {
    //该程序为模拟填充长度为100的数组
   private int[] data =new int[100];
   private int hasData=0;
   //记录progressBar的完成进度
    int status =0;
    private ProgressBar bar;
    private ProgressBar bar2;
    static class MyHander extends Handler
    {
        private WeakReferenceactivity;
        MyHander(WeakReferenceactivity){
            this.activity=activity;
        }

        @Override
        public void handleMessage(Message msg) {
            //表明消息是由该程序发送的
            if (msg.what==0x111)
            {
                activity.get().bar.setProgress(activity.get().status);
                activity.get().bar2.setProgress(activity.get().status);
            }
        }
    }
    //创建一个负责更新的进度条Handler
    MyHander myHander=new MyHander(new WeakReference<>(this));
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bar=findViewById(R.id.bar);
        bar2=findViewById(R.id.bar2);
        //启动线程来执行任务
        new Thread()
        {
            @Override
            public void run() {
                while (status<100)
                {
                    //获取操作的完成百分比
                    status=doWork();
                    //发送消息
                    myHander.sendEmptyMessage(0x11);
                }
            }
        }.start();
    }
    //模拟一个耗时操作
    public int doWork()
    {
        //为数组元素赋值
        data[hasData++]=(int)(Math.random() * 100);
        try {
            Thread.sleep(100);
        }catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        return  hasData;
    }
}

my_bar.xml:



    //定义轨道背景
    
    
    

main_activity.xml:




  
      //定义一个大环形的进度条
      
      //定义一个中等大小的进度条
      
      //定义一个小环进度条
      
  

    //定义一个水平进度条
    
    //定义一个水平进度条改变外观
    

效果图:


2.gif

你可能感兴趣的:(ProgressBar(进度条)的使用和方法)