ProgressBar 控制項
ProgressBar就是所謂的進度條,進度條在Android中的樣式也分為好幾種,有條狀的,也有圓形轉動的。
首先要在布局檔案中,定義和設定ProgressBar的樣式。
程式碼片段如下:
<ProgressBar
android:id="@+id/bar1"//設定ProgressBar的id
android:layout_width="200dp"設定ProgressBar的長度
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"//設定ProgressBar的類型為水平條狀
android:max="100"//設定ProgressBar總共有多少格
android:visibility="gone"//設定ProgressBar為預設不可見
/>
<ProgressBar
android:id="@+id/bar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/ progressBarStyleSmall "//設定ProgressBar的類型為小圓圈
android:visibility="gone"
/>
<ProgressBar
android:id="@+id/bar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyle"//設定ProgressBar的類型為中等圓圈
android:visibility="gone"
/>
<ProgressBar
android:id="@+id/bar4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleLargeInverse"//設定ProgressBar的類型為反轉的大圓圈
android:visibility="gone"
/>
上面的代碼定義了四個ProgressBar,其中第一個為條狀的進度條,可以設定id,設定進度條的長度,這裡的style屬性是設定進度條的樣式的,在android.R.attr 包中定義了各種樣式的參數,有progressBarStyleHorizontal,progressBarStyleSmall,progressBarStyle,progressBarStyleLarge,也有在轉圈的樣式參數後面加上Inverse,即progressBarStyleSmallInverse,progressBarStyleInverse,progressBarStyleLargeInverse,就可以得到反轉的轉圈進度條了。
接著在Activity中得到進度條的對象,對於一個ProgressBar對象,我們可以有很多操作,我們可以設定背景色,設定可見與否,設定長寬等許多操作。對於一個條狀的進度條,可以這時候設定最大格數,也可以理解為進度條的最大值,預設是100。同時,條狀進度條不僅有主進度,還有輔進度條,也可以叫做第二進度條。一般輔進度比主進度跑得快,且主進度條的顏色比輔進度條深,那樣可以表示預先載入等資訊,比較形象。
程式碼片段如下:
private ProgressBar bar1 = (ProgressBar)findViewById(R.id.bar1);
private ProgressBar bar2 = (ProgressBar)findViewById(R.id.bar2);
private ProgressBar bar3 = (ProgressBar)findViewById(R.id.bar3);
private ProgressBar bar4 = (ProgressBar)findViewById(R.id.bar4);
start = (Button)findViewById(R.id.start);
start.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(i==0){
bar1.setVisibility(View.VISIBLE); //設定可見
bar2.setVisibility(View.VISIBLE);
bar3.setVisibility(View.VISIBLE);
bar4.setVisibility(View.VISIBLE);
}else if(i<100){
bar1.setProgress(i);
bar1.setSecondaryProgress(i+10); //設定輔進度條
bar2.setProgress(i);
bar3.setProgress(i);
bar4.setProgress(i);
}else{
bar1.setVisibility(View.GONE);
bar2.setVisibility(View.GONE);
bar3.setVisibility(View.GONE);
bar4.setVisibility(View.GONE);
}
i+=10;
}
});
運行效果:
上面的例子中,有一個start按鈕,按鈕上綁定了一個事件,每次點擊start按鈕,進度條就會向前走一步。
當然,現實應用肯定會結合線程以及之後要學的Handler來進行自動的改變進度,而不會傻傻的點擊使進度條前進,這裡的例子只是對ProgressBar的使用做一些解釋。
以上內容和之前的幾篇部落格是一些Android的基礎控制項,之後就不講基礎控制項了,會講一些Android的特性,因為高階的控制項需要一些Android特性的支援。而且,單純的基礎控制項作用並不大,必須結合一些Android特性,才能靈活的做出好的應用。控制項的使用方式可以舉一反三,可以參考android的api文檔來自己學習練習。
附件是範例程式碼,僅供參考。
本文出自 “戰神殿” 部落格