進(jìn)度條ProgressBar的功能和用法
通過(guò)style屬性可以為progressBar指風(fēng)格
ProgressBar提供如下方法操作進(jìn)度的完成百分比
setProgress(int)設(shè)置進(jìn)度的完成百分比
incrementProgressBy(int)設(shè)置進(jìn)度條的進(jìn)度增加和減少,正為增加冈敛,負(fù)為減少稚失。
package com.example.bao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.net.wifi.WifiEnterpriseConfig.Eap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AbsListView;
import android.widget.AdapterViewFlipper;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.StackView;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity {
? ? ? ? // 該程序模擬填充長(zhǎng)度100的數(shù)組
? ? ? ? private int[] data = new int[100];
? ? ? ? int hasData = 0;
? ? ? ? // 記錄ProgressBar的完成進(jìn)度
? ? ? ? int status = 0;
? ? ? ? ProgressBar pb1, pb2;
? ? ? ? // 創(chuàng)建一個(gè)負(fù)責(zé)更新的進(jìn)度Handler
? ? ? ? Handler handler = new Handler() {
? ? ? ? ? ? ? ? public void handleMessage(Message msg) {
? ? ? ? ? ? ? ? ? ? ? ? // 表明消息是由該程序發(fā)送的
? ? ? ? ? ? ? ? ? ? ? ? if (msg.what == 0x11) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pb1.setProgress(status);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pb2.setProgress(status);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? };
? ? ? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? ? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? ? ? ? ? setContentView(R.layout.progressbar);
? ? ? ? ? ? ? ? pb1 = (ProgressBar) findViewById(R.id.bar);
? ? ? ? ? ? ? ? pb2 = (ProgressBar) findViewById(R.id.bar2);
? ? ? ? ? ? ? ? // 啟動(dòng)線程來(lái)執(zhí)行任務(wù)
? ? ? ? ? ? ? ? new Thread() {
? ? ? ? ? ? ? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while (status < 100) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 獲取耗時(shí)操作的完成百分比
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? status = dowork();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 發(fā)送消息
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? handler.sendEmptyMessage(0x11);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }.start();
? ? ? ? }
? ? ? ? // 模擬耗時(shí)操作
? ? ? ? public int dowork() {
? ? ? ? ? ? ? ? // 為數(shù)組元素賦值
? ? ? ? ? ? ? ? data[hasData++] = (int) (Math.random() * 100);
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? Thread.sleep(500);
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? ? ? // TODO: handle exception
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return hasData;
? ? ? ? }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:orientation="vertical" >
? ? <LinearLayout
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:orientation="horizontal" >
? ? ? ? <!-- 定義一個(gè)大環(huán)形進(jìn)度條 -->
? ? ? ? <ProgressBar
? ? ? ? ? ? style="@android:style/Widget.ProgressBar.Large"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <!-- 定義一個(gè)中等大小的環(huán)形進(jìn)度條 -->
? ? ? ? <ProgressBar
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <!-- 定義一個(gè)小的環(huán)形進(jìn)度條 -->
? ? ? ? <ProgressBar
? ? ? ? ? ? style="@android:style/Widget.ProgressBar.Small"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? </LinearLayout>
? ? <TextView
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:text="任務(wù)完成進(jìn)度" />
? ? <!-- 定義一個(gè)水平進(jìn)度條 -->
? ? <ProgressBar
? ? ? ? android:id="@+id/bar"
? ? ? ? style="@android:style/Widget.ProgressBar.Horizontal"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:max="100" />
? ? <!-- 定義一個(gè)水平進(jìn)度條振乏,并改變軌道外觀 -->
? ? <ProgressBar
? ? ? ? android:id="@+id/bar2"
? ? ? ? style="@android:style/Widget.ProgressBar.Horizontal"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:max="100"
? ? ? ? android:progressDrawable="@drawable/my_bar" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
? ? <!-- 定義軌道的背景 -->
? ? <item
? ? ? ? android:id="@android:id/background"
? ? ? ? android:drawable="@drawable/mia4">
? ? </item>
? ? <!-- 定義軌道上已經(jīng)完成部分樣式 -->
? ? <item
? ? ? ? android:id="@android:id/progress"
? ? ? ? android:drawable="@drawable/mia2">
? ? </item>
</layer-list>