2

プログレスバーのタイマーを設定する方法はありますか?たとえば、10秒間待ってから、プログレスバーを閉じますか?誰かが私にその簡単なコードを教えてくれたら幸いです。

よろしくお願いします:)

4

3 に答える 3

2

UIスレッドでハンドラーを作成し、sendMessageDelayedを介して呼び出すことができます。

...
final Handler h = new Handler() {
  @Override
  public void handleMessage(Message message) {
    mProgressBar.dismiss();
  }     
};
h.sendMessageDelayed(new Message(), 10000);
...

このコードはtestetではありません。

于 2012-06-27T22:58:35.420 に答える
1

Handlerクラスを使用します。

import android.os.Handler;
import android.os.Message;

public class someClass implements Handler.Callback {
    public static final int MSG_HIDE_PBAR = 0;
    static final long PBAR_DELAY = 10 * 1000; //Delay is is milliseconds

    //Probably should initialize this in your creation code (onCreate if activity)
    //and likewise set it to null when destroyed (onDestroy if activity)
    private Handler mHandler = new Handler(this); 

    public void showPbar(){
        //Show your progress bar here
        mHandler.sendEmptyMessageDelayed(MSG_HIDE_PBAR, PBAR_DELAY);
    }

    public boolean handleMessage(Message msg){
        switch (msg.what){
            case MSG_HIDE_PBAR:
                //hide your progress bar here, call postInvalidate instead of
                //invalidate because we are in a different thread
                break;
        }
        return true;
    }
}

クイック:はい、ダーティ:はい、仕事を終わらせます:はい

おそらく、スリープ呼び出しまたはクロックをチェックするループを使用したAsyncTaskで同じことを達成できます。Handler私にはきれいに見えます。

于 2012-06-27T22:54:23.143 に答える
0

はい、次のように10秒後に却下するためThreadOnUiThreadを使用して実行できます。

public void myThread() {
    Thread th = new Thread() {
        @Override
        public void run() {
            try {
                while (mRunning) {
                    Thread.sleep(10L);//10s wait
                    YourCurrentActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            //DISMISS PROGRESS BAR HERE
                            mRunning = false;
                        }
                    });
                }
            } catch (InterruptedException e) {
                // TODO: handle exception
            }
        }
    };
    th.start();
}
于 2012-06-27T22:57:21.697 に答える