Android中进度条ProgressBar的使用

来源:互联网 发布:写真软件有哪些 编辑:程序博客网 时间:2024/04/24 15:07

1.环形进度条的使用

这种进度条无法显示进度,显示为一个不断旋转的环形,可以通过设置其可见性来使用,这种进度条只需要添加其控件即可

  • 大的环形进度条
<ProgressBar            style="?android:attr/progressBarStyleLarge"            android:layout_width="wrap_content"            android:layout_height="wrap_content"             />
  • 正常大小的环形进度条
        <ProgressBar            android:layout_width="wrap_content"            android:layout_height="wrap_content"             />
  • 小的环形进度条
        <ProgressBar            style="?android:attr/progressBarStyleSmall"            android:layout_width="wrap_content"            android:layout_height="wrap_content"             />

分别是大中小的ProgressBar

2.使用水平进度条

第一个进度条使用默认的外观,第二个使用自定义的外观,设置其最大值为100,并在代码中创建一个Handler来负责更新进度

  • 布局中加入控件
<!--默认外观的控件-->    <ProgressBar        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:max="100"        android:id="@+id/progressBar" />    <!--使用自定义外观的控件-->    <ProgressBar        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:max="100"        android:progressDrawable="@drawable/my"        android:id="@+id/progressBar2" />
  • Activity代码文件
public class MainActivity extends AppCompatActivity {    private int[] data = new int[100];    int hasData = 0;    //记录ProgressBar的完成进度    int status = 0;    ProgressBar bar,bar2;    //创建一个负责更新进度条的Handler    Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what == 0x111) {                bar.setProgress(status);                bar2.setProgress(status);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        bar = (ProgressBar) findViewById(R.id.progressBar);        bar2 = (ProgressBar) findViewById(R.id.progressBar2);        //启动线程来执行任务        new Thread(){            public void run(){                while (status < 100) {                    //获取耗时操作完成的百分比                    status = doWork();                    //发送消息                    handler.sendEmptyMessage(0x111);                }            }        }.start();    }    //模拟耗时的操作    public int doWork(){        data[hasData++] = (int) (Math.random() * 100);        try {            Thread.sleep(100);        } catch (InterruptedException e) {            e.printStackTrace();        }        return hasData;    }}

默认和自定义的ProgressBar


3.使用标题栏进度条

调用Activity的requestWindowFeature()方法,根据传入的参数可以启用特定的窗口特征(需要放在setContentView()方法之前)

  • 使用显示进度的进度条
    //设置窗口特征,启用显示进度的进度条    requestWindowFeature(Window.FEATURE_PROGRESS);    //设置进度    setProgress(4500);  
  • 使用不显示进度的进度条
        //设置窗口特征,启用不显示进度的进度条     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);        //设置进度    setProgress(4500);  
0 0
原创粉丝点击