June 9, 2012

プログレスバーの作り方

プログレスバーの作り方です。ProgressBarクラスを使います。

プログレスバーは進捗状況を表示したり、作業中であることを表したりするのに使います。使い方はシンプルで進捗中であることを表現したい時だけ、表示をすればいいだけです。アニメーションは勝手に行ってくれます。進捗状況を表すときはその値をセットすれば表示されます。

例)3種類のプログレスバーを表示し、進捗状況を表すバーが2段階で進んでいき、最後にプログレスバー2つを消します。進捗状況の変化はスレッドを使って定期的に値を更新しています。

<ProgressBar
        android:id="@+id/progress1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Small" />
    <ProgressBar
        android:id="@+id/progress2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Large" />
    <ProgressBar
        android:id="@+id/progress3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal" />

public class SampleAppActivity extends Activity {
 private final static String TAB = "SampleAppActivity";
 private Handler mHandler = new Handler();
 private ProgressBar mProgress1, mProgress2, mProgress3;
 private final int PROGRESS_MAX = 256;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        mProgress1 = (ProgressBar) findViewById(R.id.progress1);
        mProgress2 = (ProgressBar) findViewById(R.id.progress2);
        mProgress3 = (ProgressBar) findViewById(R.id.progress3);
        mProgress3.setMax(PROGRESS_MAX);
        mProgress3.setProgress(10);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while(mProgress3.getProgress() < PROGRESS_MAX) {
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            mProgress3.incrementProgressBy(3);
                            mProgress3.incrementSecondaryProgressBy(8);
                        }
                    });
                    try {
                        Thread.sleep(150);
                    } catch (InterruptedException e) {
                    }
                }
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        mProgress1.setVisibility(View.GONE);
                        mProgress2.setVisibility(View.GONE);
                    }
                });
            }
        }).start();
 }
}


参考:Android Developers:ProgressBar

No comments:

Post a Comment