天天看點

Android 之橫向進度條示範

進度條:相信大家也都明白,有了進度條,那麼給使用者就不會造成,長時間的等待而覺得自己的程式挂掉了,是以,這個小demo還是可一看看的,那麼接下來,然我們來看看到底是如何實作的。

1.效果圖:

Android 之橫向進度條示範
Android 之橫向進度條示範
Android 之橫向進度條示範

2.布局說明:

1.textview顯示進度條

2.ProgressBar進度條

3.進度條配置:

 <ProgressBar

        android:id="@+id/pb"

        style="@android:style/Widget.ProgressBar.Horizontal"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:max="100" />       

其中:max可以手動設定,也就是你下載下傳的内容大小,style也是

3.執行個體源碼:

package com.zengtao.classwork;

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

public class MainActivity extends ActionBarActivity {
	private ProgressBar pb; // 進度條
	private int[] randData = new int[100]; // 數組
	private int index = 0; // 索引
	private int mProgressStaus = 0; // 設定進度條的長度
	private Handler mHandler;

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

		pb = (ProgressBar) findViewById(R.id.pb);

		// 初始化handle,綁定在主線程中的隊列消息中
		mHandler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				// 接收消息
				if (msg.what == 0x111) {
					mProgressStaus = index;
					pb.setProgress(mProgressStaus);
				}
			}
		};
		// 建立子線程,在子線程中處理耗時工作
		new Thread() {
			@Override
			public void run() {
				super.run();
				while (index < 100) {
					doWork();
					Message msg = new Message();
					msg.what = 0x111;
					mHandler.sendMessage(msg);
				}
			}

		}.start();
	}

	/**
	 * 模拟耗時工作(一定要在子線程中做)
	 * 
	 * @return 進度條的多少
	 */
	public int doWork() {
		randData[index++] = (int) (Math.random() * 100);
		try {
			Thread.sleep(100);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return index;
	}
}
           

4.dowork()方法是模拟的一個耗時操作,當然你自己也可以用其他的代替,比如:網上下載下傳圖檔,下載下傳好了,之後顯示出來等等。

以上是自己的勞動成果,雖然小的跟蚊子一樣,但是也是肉,希望能幫到大家,謝謝。