Heim > Artikel > Backend-Entwicklung > Android-UI-Steuerelementserie: ProgressBar (Fortschrittsbalken)
Wenn Android einige Hintergrundvorgänge ausführt, z. B. das Laden von Spielen und das Abspielen von Liedern, kennt der Benutzer den Fortschritt der Programmausführung nicht. Zu diesem Zeitpunkt kann der Fortschrittsbalken verwendet werden, um den Fortschritt anzuzeigen.
Das Android-System bietet zwei Arten von Fortschrittsbalken, den langen Fortschrittsbalken (progressBarStyleHorizontal) und den kreisförmigen Fortschrittsbalken (progressBarStyleLarge). Der Standard-Fortschrittsbalken auf der Android-Plattform ist der zweite Typ. Darüber hinaus können Sie auch einen Fortschrittsbalken in der Titelleiste des Formulars festlegen. Dazu müssen Sie den Anzeigestil des Formulars „requestWindowFeature(Window.FEATURE_PROGRESS)“ festlegen setProgressBarVisibility(true); Methode zur Anzeige
Das Folgende ist ein Beispiel, das aus einem Titelleisten-Fortschrittsbalken, einem langen Fortschrittsbalken und einem kreisförmigen Fortschrittsbalken besteht und von Threads gesteuert wird.
Hinweis: Der kreisförmige Fortschrittsbalken zeigt keinen spezifischen Fortschritt an, sondern dreht sich einfach
package org.hualang.progress; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.ProgressBar; public class ProgressBarTest extends Activity { //声明ProgressBar对象 private ProgressBar pro1; private ProgressBar pro2; private Button btn; protected static final int STOP_NOTIFIER = 000; protected static final int THREADING_NOTIFIER = 111; public int intCounter=0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置窗口模式,,因为需要显示进度条在标题栏 requestWindowFeature(Window.FEATURE_PROGRESS); //设置标题栏上的进度条可见 setProgressBarVisibility(true); setContentView(R.layout.main); //取得ProgressBar pro1 = (ProgressBar) findViewById(R.id.progress1); pro2= (ProgressBar) findViewById(R.id.progress2); btn = (Button)findViewById(R.id.button); //设置进度条是否自动运转,即设置其不确定模式,false表是不自动运转 pro1.setIndeterminate(false); pro2.setIndeterminate(false); //当按钮按下时开始执行, btn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //设置ProgressBar为可见状态 pro1.setVisibility(View.VISIBLE); pro2.setVisibility(View.VISIBLE); //设置ProgressBar的最大值 pro1.setMax(100); //设置ProgressBar当前值 pro1.setProgress(0); pro2.setProgress(0); //通过线程来改变ProgressBar的值 new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { try { intCounter = (i + 1) * 20; Thread.sleep(1000); if (i == 4) { Message m = new Message(); m.what = ProgressBarTest.STOP_NOTIFIER; ProgressBarTest.this.myMessageHandler.sendMessage(m); break; } else { Message m = new Message(); m.what = ProgressBarTest.THREADING_NOTIFIER; ProgressBarTest.this.myMessageHandler.sendMessage(m); } } catch (Exception e) { e.printStackTrace(); } } } }).start(); } }); } Handler myMessageHandler = new Handler() { // @Override public void handleMessage(Message msg) { switch (msg.what) { //ProgressBar已经是对大值 case ProgressBarTest.STOP_NOTIFIER: pro1.setVisibility(View.GONE); pro2.setVisibility(View.GONE); Thread.currentThread().interrupt(); break; case ProgressBarTest.THREADING_NOTIFIER: if (!Thread.currentThread().isInterrupted()) { // 改变ProgressBar的当前值 pro1.setProgress(intCounter); pro2.setProgress(intCounter); // 设置标题栏中前景的一个进度条进度值 setProgress(intCounter*100); // 设置标题栏中后面的一个进度条进度值 setSecondaryProgress(intCounter*100);// } break; } super.handleMessage(msg); } }; }
main.xml
<?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="进度条实例演示" /> <ProgressBar android:id="@+id/progress1" style="?android:attr/progressBarStyleHorizontal"---设置进度条为长条形 android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone"---设置其不可见 /> <ProgressBar android:id="@+id/progress2" style="?android:attr/progressBarStyleLarge"---设置进度条为圆形进度条 android:layout_width="wrap_content" android:layout_height="wrap_content" android:max="100"---设置其最大值 android:progress="50"---设置当前进度值 android:secondaryProgress="70"---设置次要进度值 android:visibility="gone" /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="启动进度条" /> </LinearLayout>
Die laufenden Ergebnisse sind wie folgt folgt:
Nachdem Sie auf die Schaltfläche „Fortschrittsbalken starten“ geklickt haben, wird der Fortschrittsbalken automatisch ausgeführt
Wenn es beendet ist, wird das Fortschrittsbalkenprogramm automatisch beendet und zum ersten Bild zurückgekehrt
Das Obige ist der Inhalt der Android-UI-Steuerungsserie: ProgressBar (Fortschrittsbalken). Bitte achten Sie auf die chinesische PHP-Website (www.php.cn)!