ユーザーが別のアクティビティに切り替えたときに、通知領域に進行状況バーを配置したい;読み込み時に通知領域に進行状況のパーセントと値を表示します。
これどうやってするの ?
ユーザーが別のアクティビティに切り替えたときに、通知領域に進行状況バーを配置したい;読み込み時に通知領域に進行状況のパーセントと値を表示します。
これどうやってするの ?
次の方法で実行できます。プログレスバーを使用するための鍵は、「スレッド」を使用して時間消費タスクを実行し、別の「スレッド」を使用してプログレスバーのステータスを適宜更新することです。コードのコメントを読んでください、それは自明であるはずです。
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;
    }
}
「layout/main.xml」ファイルを開き、デモンストレーション用の通常のボタンを追加するだけです。
<Button
    android:id="@+id/btnStartProgress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Download File" />
通知を表示するには:
NotificationManager notificationManager = (NotificationManager) mContext
            .getSystemService(NOTIFICATION_SERVICE);
        Notification updateComplete = new Notification();
        updateComplete.icon = android.R.drawable.stat_notify_sync;
        updateComplete.tickerText = mContext
            .getText(R.string.app_name);
        updateComplete.when = System.currentTimeMillis();
        Intent notificationIntent = new Intent(mContext,
                MainActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0,
                notificationIntent, 0);
            String contentTitle = mContext.getText(R.string.app_name)
                    .toString();
                String contentText;
                    contentText = mContext.getText(
                        R.string.yes).toString();
                updateComplete.setLatestEventInfo(mContext, contentTitle,
                    contentText, contentIntent);
                notificationManager.notify(progressBarStatus, updateComplete);
詳細については:
http://mobile.tutsplus.com/tutorials/android/android-fundamentals-status-bar-notifications/