您好,登錄后才能下訂單哦!
ProgressBar是進度條,android中的指示器,先看效果圖
上圖中水平進度條可以看見有兩種顏色,淺色的是SecondaryProgress,可以用作展示中間進度用。
ProgressBar是有多種樣式的,有水平的和圓圈打轉的。若需要指示進度的可以使用水平的,其他樣式在可以在android api文檔找到
Other progress bar styles provided by the system include:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse
先看下布局文件activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.jam.testprogressbar.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ProgressBar android:id="@+id/id_firstbar_id" android:layout_width="150dp" android:layout_height="wrap_content" android:visibility="gone" /> <ProgressBar android:id="@+id/id_spinningbar_id" android:layout_width="150dp" android:layout_height="wrap_content" android:visibility="gone"/> <Button android:id="@+id/id_buttonfirst" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="addfirst"/> <Button android:id="@+id/id_buttonsecond" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="addsecond"/> </LinearLayout>
布局簡單,若要修改ProgressBar,只需要改style的內容即可。
然后是MainActivity.java 的內容:
package com.jam.testprogressbar; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; public class MainActivity extends Activity { //聲明控件 private ProgressBar firstProgressBar; private ProgressBar secondProgressBar; private Button buttonFirst; private Button buttonSecond; private int i = 0; private int j = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); firstProgressBar = (ProgressBar) findViewById(R.id.id_firstbar_id); secondProgressBar = (ProgressBar) findViewById(R.id.id_spinningbar_id); buttonFirst = (Button) findViewById(R.id.id_buttonfirst); buttonSecond = (Button) findViewById(R.id.id_buttonsecond); /** * 給第一個按鈕綁定匿名內部類 * 在i==0時,顯示兩個ProgressBar * i《100 時,每按一次就加10。 * 當i超過100,則隱藏兩個ProgressBar */ buttonFirst.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(i == 0) { firstProgressBar.setVisibility(View.VISIBLE); secondProgressBar.setVisibility(View.VISIBLE); i += 10; j = i; firstProgressBar.setProgress(i); firstProgressBar.setSecondaryProgress(j); } else if( i < 100){ i += 10; j = i; firstProgressBar.setProgress(i); } else { i = 0; j = i; firstProgressBar.setVisibility(View.GONE); secondProgressBar.setVisibility(View.GONE); } } }); /** * 第二個按鈕,對SecondaryProgress進行設置。 */ buttonSecond.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(i != 0) { j += 10; firstProgressBar.setSecondaryProgress(j); } } }); } }
實現進度條代碼比較簡單,在api文檔中有例子和其他具體方法,不一一介紹。
除了主線程之外的線程都叫worker thread。
ProgressBar要與線程使用,只需要寫一個類繼承Thread或者實現Runnable即可。
注意:在原則上來說,除主線程之外,其他線程不允許訪問主線程的UI,但ProgressBar除外
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。