안드로이드가 게임 로딩, 노래 재생 등 일부 백그라운드 작업을 수행할 때 사용자는 프로그램 실행 진행 상황을 알 수 없습니다. 이때 진행률 표시줄을 사용하여 진행 상황을 표시할 수 있습니다.
Android 시스템은 긴 진행률 표시줄(progressBarStyleHorizontal)과 원형 진행률 표시줄(progressBarStyleLarge)의 두 가지 유형의 진행률 표시줄을 제공합니다. Android 플랫폼의 기본 진행률 표시줄은 두 번째 유형입니다. 또한 양식의 제목 표시줄에 진행률 표시줄을 설정할 수도 있습니다. 이 진행률 표시줄을 표시하려면 "requestWindowFeature(Window.FEATURE_PROGRESS)" 형식의 표시 스타일을 설정해야 합니다. setProgressBarVisibility(true); 표시하는 방법
다음은 제목 표시줄, 긴 진행 표시줄, 원형 진행 표시줄로 구성되고 스레드로 제어되는 예입니다.
참고: 원형 진행률 표시줄은 특정 진행 상황을 표시하지 않고 단순히
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>
회전합니다. 실행 결과는 다음과 같습니다.
진행 막대 시작 버튼을 클릭하면 자동으로 진행 막대가 실행됩니다
종료되면 자동으로 진행바 프로그램을 종료하고 첫 번째 그림으로 돌아갑니다
위는 안드로이드 UI 컨트롤 시리즈의 내용입니다: ProgressBar(진행바) 관련 내용을 더 참고해주세요. PHP 중국어 웹사이트(www.php.cn)!