android:ProgressBar控制元件

yufan發表於2016-01-08

ProgressBar 用於在介面上顯示一個進度條,表示我們的程式正在載入一些資料。它的用 法也非常簡單,修改 activity_main.xml 中的程式碼,如下所示:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

 

……

 

 

<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content"

/>

</LinearLayout>

重新執行程式,會看到螢幕中有一個圓形進度條正在旋轉,如圖 3.11 所示。

 

 

 

 

 

圖   3.11

 

這時你可能會問,旋轉的進度條表明我們的程式正在載入資料,那資料總會有載入完的 時候吧,如何才能讓進度條在資料載入完成時消失呢?這裡我們就需要用到一個新的知識 點,Android 控制元件的可見屬性。所有的 Android 控制元件都具有這個屬性,可以通過 android:visibility 進行指定,可選值有三種,visible、invisible 和 gone。visible 表示控制元件是可見的,這個值是 預設值,不指定 android:visibility 時,控制元件都是可見的。invisible 表示控制元件不可見,但是它仍 然佔據著原來的位置和大小,可以理解成控制元件變成透明狀態了。gone  則表示控制元件不僅不可見, 而且不再佔用任何螢幕空間。我們還可以通過程式碼來設定控制元件的可見性,使用的是 setVisibility()方法,可以傳入 View.VISIBLE、View.INVISIBLE 和 View.GONE 三種值。

接下來我們就來嘗試實現,點選一下按鈕讓進度條消失,再點選一下按鈕讓進度條出現 的這種效果。修改 MainActivity 中的程式碼,如下所示:

 

public class MainActivity extends Activity implements OnClickListener {

 

 

private Button button; private EditText editText; private ImageView imageView;

 

 

 

private ProgressBar progressBar;

 

 

@Override

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

button = (Button) findViewById(R.id.button); editText = (EditText) findViewById(R.id.edit_text); imageView = (ImageView) findViewById(R.id.image_view);

progressBar = (ProgressBar) findViewById(R.id.progress_bar);

button.setOnClickListener(this);

}

 

 

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button:

if (progressBar.getVisibility() == View.GONE) {

progressBar.setVisibility(View.VISIBLE);

} else {

progressBar.setVisibility(View.GONE);

}

break;

default:

break;

}

}

 

}

在按鈕的點選事件中,我們通過 getVisibility()方法來判斷 ProgressBar 是否可見,如果 可見就將 ProgressBar 隱藏掉,如果不可見就將 ProgressBar 顯示出來。重新執行程式,然後 不斷地點選按鈕,你就會看到進度條會在顯示與隱藏之間來回切換。

另外,我們還可以給 ProgressBar 指定不同的樣式,剛剛是圓形進度條,通過 style 屬性 可以將它指定成水平進度條,修改 activity_main.xml 中的程式碼,如下所示:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

 

 

 

 

……

 

 

<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" android:max="100"

/>

</LinearLayout>

指定成水平進度條後,我們還可以通過 android:max 屬性給進度條設定一個最大值,然 後在程式碼中動態地更改進度條的進度。修改 MainActivity 中的程式碼,如下所示:

 

public class MainActivity extends Activity implements OnClickListener {

……

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button:

int progress = progressBar.getProgress(); progress = progress + 10; progressBar.setProgress(progress);

break;

default:

break;

}

}

}

每點選一次按鈕,我們就獲取進度條的當前進度,然後在現有的進度上加 10 作為更新 後的進度。重新執行程式,點選數次按鈕後,效果如圖 3.12 所示。

 

 

 

 

 

圖   3.12

 

相關文章