for(int i=0;i<100;i++){
back_bar.setProgress(i);
Thread.sleep(30);
}
我想30msz刷新下进度,应该怎么写?
我这样写,发现它过30ms休眠,但是等到循环完了,它才显示出来,直接100%。不知道应该怎么写?

解决方案 »

  1.   

    http://blog.csdn.net/wljie2008/archive/2011/05/24/6441717.aspx
    看看。demo
      

  2.   

    最简单的用法:public class MainActivity extends Activity {

    ProgressBar bar;

    int progress = 0;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            Button startButton = (Button)findViewById(R.id.startButton);
            
            bar = (ProgressBar)findViewById(R.id.myPro);
            
            startButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Message msg = new Message();

    msg.what = 1;

    handler.sendMessage(msg);
    }
    });
        }
        
        Handler handler = new Handler(){ @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    if(msg.what == 1){

    if(bar.getProgress() == bar.getMax()){
    progress = 0;
    }else{
    progress++;
    }

    bar.setProgress(progress);

    Message message = new Message();

    message.what = 1;

    handler.sendMessageDelayed(message, 1000);
    }
    }
        
        };
    }
    记事本写的
      

  3.   

    你得单独写个线程跑,不能在主线程中跑
    Thread t = new Thread() {
    public void run() {
    // pb.incrementProgressBy(1);
    while (pb.getProgress() < pb.getMax()) {
    try {
    sleep(30);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    pb.setProgress(pb.getProgress() + 1);

    }
    };
    t.start();