大家好,今天給大家講一下Android中ProgressBar的使用,這個控件在開發中還是經常用到的,比如用戶瀏覽網頁的時候,中間肯定有個 傳輸過程,所以用進度條讓用戶耐心等待。再比如我在Android Market下載應用,它也會有進度條顯示下載進度。我為什么要舉這兩個例子呢,是因為它們分別是圓形進度條和長形進度條的代表。如下面兩張圖:
圖1.UC瀏覽網頁圓形進度條效果。
圖2.Google Market應用下載長形進度條效果.
?
下面我們看一下兩都皆有之的Android自帶的瀏覽器的效果圖如下:
?
為了讓大家更容易理解我將簡單寫一個Demo,大家可以按照我的步驟一步一步來。
第一步:新建一個Android工程命名為ProgressBarDemo.
?
第二步:修改main.xml代碼如下(圓形進度條和長形進度條這里樣式不同用系統自帶的):
?
[c-sharp]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>?????<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"?????????android:orientation="vertical"????????android:layout_width="fill_parent"?????????android:layout_height="fill_parent">????????????????<TextView????????????android:layout_width="fill_parent"?????????????android:layout_height="wrap_content"????????????android:text="Welcome?to?Mr?Wei's?blog"?/>?????????<ProgressBar????????????android:id="@+id/rectangleProgressBar"?????????????style="?android:attr/progressBarStyleHorizontal"?mce_style="?android:attr/progressBarStyleHorizontal"??????????????android:layout_width="fill_parent"????????????android:layout_height="wrap_content"???????????android:visibility="gone"???????????/>???????<ProgressBar????????????android:id="@+id/circleProgressBar"?????????????style="?android:attr/progressBarStyleLarge"?mce_style="?android:attr/progressBarStyleLarge"???????????android:layout_width="wrap_content"????????????android:layout_height="wrap_content"???????????android:visibility="gone"????????????/>???????????????<Button?android:id="@+id/button"????????????????android:text="Show?ProgressBar"?????????????????android:layout_width="wrap_content"????????????????android:layout_height="wrap_content"???????????????/>???</LinearLayout>??? ?
第三步:修改ProgressBarDemo.java代碼如下(如果這里有對Handler和Message不明白的地方可以去Android高 手進階教程(九)?看下這個教程):
?
[c-sharp]?view plaincopy
package?com.tutor.progress;??import?android.app.Activity;??import?android.os.Bundle;??import?android.os.Handler;??import?android.os.Message;??import?android.view.View;??import?android.widget.Button;??import?android.widget.ProgressBar;??public?class?ProgressBarDemo?extends?Activity?{????????????private?ProgressBar?rectangleProgressBar,circleProgressBar;??????private?Button?mButton;????????????protected?static?final?int?STOP?=?0x10000;??????protected?static?final?int?NEXT?=?0x10001;??????private?int?iCount?=?0;????????????public?void?onCreate(Bundle?savedInstanceState)?{??????????super.onCreate(savedInstanceState);??????????setContentView(R.layout.main);????????????????????rectangleProgressBar?=?(ProgressBar)findViewById(R.id.rectangleProgressBar);??????????circleProgressBar?=?(ProgressBar)findViewById(R.id.circleProgressBar);??????????mButton?=?(Button)findViewById(R.id.button);????????????????????rectangleProgressBar.setIndeterminate(false);??????????circleProgressBar.setIndeterminate(false);????????????????????mButton.setOnClickListener(new?Button.OnClickListener()?{????????????????????????????public?void?onClick(View?v)?{????????????????????????????????????rectangleProgressBar.setVisibility(View.VISIBLE);??????????????????circleProgressBar.setVisibility(View.VISIBLE);????????????????????????????????????rectangleProgressBar.setMax(100);??????????????????rectangleProgressBar.setProgress(0);??????????????????circleProgressBar.setProgress(0);??????????????????????????????????????????????????????Thread?mThread?=?new?Thread(new?Runnable()?{????????????????????????????????????????????public?void?run()?{????????????????????????????????????????????????????for(int?i=0?;?i?<?20;?i++){??????????????????????????????try{??????????????????????????????????iCount?=?(i?+?1)?*?5;??????????????????????????????????Thread.sleep(1000);??????????????????????????????????if(i?==?19){??????????????????????????????????????Message?msg?=?new?Message();??????????????????????????????????????msg.what?=?STOP;??????????????????????????????????????mHandler.sendMessage(msg);??????????????????????????????????????break;??????????????????????????????????}else{??????????????????????????????????????Message?msg?=?new?Message();??????????????????????????????????????msg.what?=?NEXT;??????????????????????????????????????mHandler.sendMessage(msg);??????????????????????????????????}??????????????????????????????}catch?(Exception?e)?{??????????????????????????????????e.printStackTrace();??????????????????????????????}??????????????????????????}????????????????????????????????????????????????}??????????????????});??????????????????mThread.start();??????????????}??????????});??????}??????????????????private?Handler?mHandler?=?new?Handler(){??????????public?void?handleMessage(Message?msg){??????????????switch?(msg.what)?{??????????????case?STOP:??????????????????rectangleProgressBar.setVisibility(View.GONE);??????????????????circleProgressBar.setVisibility(View.GONE);??????????????????Thread.currentThread().interrupt();??????????????????break;??????????????case?NEXT:??????????????????if(!Thread.currentThread().isInterrupted()){??????????????????????rectangleProgressBar.setProgress(iCount);??????????????????????circleProgressBar.setProgress(iCount);??????????????????}??????????????????break;??????????????}??????????}??????};??}?? ?
?
第四步:運行上述工程,效果如下圖:
?
總結
以上是生活随笔為你收集整理的Android 基础教程之-------Android ProgressBar的使用!的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。