Androidのプログレスバーの例
Androidでは、進行状況を示すバーは、タスクの完了に時間がかかることをユーザーに伝えるのに便利です。
このチュートリアルでは、進行状況バーのダイアログを表示して、タスクが実行中であることをユーザーに伝える方法と、タスクが完了するまでプログレスバーのステータスを上げる方法を示します。
P.SこのプロジェクトはEclipse 3.7で開発され、Android 2.3.3.
でテストされています
1.ボタンを追加する
”
res/layout/main.xml
“ファイルを開き、デモンストレーションのために通常のボタンを追加するだけです。
ファイル:res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout__width="fill__parent" android:layout__height="fill__parent" android:orientation="vertical" > <Button android:id="@+id/btnStartProgress" android:layout__width="wrap__content" android:layout__height="wrap__content" android:text="Download File"/> </LinearLayout>
2.コードコード
プログレスバーを使用するためのキーは、あなたの時間消費タスクを実行するための
Thread
とそれに応じてプログレスバーステータスを更新するための別の
` Thread
“を使用しています。コードのコメントを読んで、それは自明でなければなりません。
File:MyAndroidAppActivity.java
package com.mkyong.android; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.widget.Button; import android.view.View; import android.view.View.OnClickListener; public class MyAndroidAppActivity extends Activity { Button btnStartProgress; ProgressDialog progressBar; private int progressBarStatus = 0; private Handler progressBarHandler = new Handler(); private long fileSize = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); addListenerOnButton(); } public void addListenerOnButton() { btnStartProgress = (Button) findViewById(R.id.btnStartProgress); btnStartProgress.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { //prepare for a progress bar dialog progressBar = new ProgressDialog(v.getContext()); progressBar.setCancelable(true); progressBar.setMessage("File downloading ..."); progressBar.setProgressStyle(ProgressDialog.STYLE__HORIZONTAL); progressBar.setProgress(0); progressBar.setMax(100); progressBar.show(); //reset progress bar status progressBarStatus = 0; //reset filesize fileSize = 0; new Thread(new Runnable() { public void run() { while (progressBarStatus < 100) { //process some tasks progressBarStatus = doSomeTasks(); //your computer is too fast, sleep 1 second try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //Update the progress bar progressBarHandler.post(new Runnable() { public void run() { progressBar.setProgress(progressBarStatus); } }); } //ok, file is downloaded, if (progressBarStatus >= 100) { //sleep 2 seconds, so that you can see the 100% try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } //close the progress bar dialog progressBar.dismiss(); } } }).start(); } }); } //file download simulator... a really simple public int doSomeTasks() { while (fileSize <= 1000000) { fileSize++; if (fileSize == 100000) { return 10; } else if (fileSize == 200000) { return 20; } else if (fileSize == 300000) { return 30; } //...add your own } return 100; } }
__P.S “doSomeTasks”メソッドは単なるファイルサイズダウンロードシミュレータです。このメソッドを長時間実行しているタスクに置き換えてください。
デモ
アプリケーションを実行します。
{空} 1。結果、単一のボタン。
{空} 2。ボタンをクリックすると、現在のダウンロードの進行状況を示す「プログレスバーダイアログ」が表示されます。
{空} 3。タスクが完了し、進行状況バーが100%表示され、自動的に閉じます。
ソースコードをダウンロードする
ダウンロードする –
Android-ProgressBar-Example.zip
(15 KB)
参考文献
ProgressBarの例]。
http://developer.android.com/reference/android/app/ProgressDialog.html
[Android
ProgressDialog JavaDoc]。
http://huuah.com/android-progress-bar-and-thread-updating/
[Another
Android ProgressBarの例]
リンク://タグ/アンドロイド/[アンドロイド]リンク://タグ/プログレスバー/[プログレスバー]