1. 程式人生 > >面試題之10秒跑完進度條

面試題之10秒跑完進度條

方式一:使用Handler

Java程式碼  收藏程式碼
  1.  public class ProgressActivity extends Activity implements Runnable {  
  2.     private ProgressBar progress;  
  3.     Handler h = new Handler();  
  4.     private int max=100,current,step;  
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_progress);  
  9.         progress = (ProgressBar) findViewById(R.id.progress);  
  10.         progress.setMax(max);  
  11.         progress.setProgress(0);  
  12.         step = max/10;  
  13.         h.post(this);  
  14.     }  
  15.     @Override  
  16.     protected void onDestroy() {  
  17.         super
    .onDestroy();  
  18.     }  
  19.     @Override  
  20.     public void run() {  
  21.         current = progress.getProgress();  
  22.         progress.setProgress(current+step);  
  23.         h.postDelayed(this1000);  
  24.     }  
  25. }  


 方式二:使用自定義執行緒

               有些微不對勁

Java程式碼  收藏程式碼
  1. public class ProgressActivity extends Activity {  
  2.     private ProgressBar progress;  
  3.     private int max = 100, current = 0, step = 0;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_progress);  
  8.         progress = (ProgressBar) findViewById(R.id.progress);  
  9.         progress.setMax(max);  
  10.         progress.setProgress(0);  
  11.         step = max / 10;  
  12.         new Thread(new Runnable() {  
  13.             int i = 1;  
  14.             @Override  
  15.             public void run() {  
  16.                 try {  
  17.                     while (max != progress.getProgress()) {  
  18.                         Log.i("次數", i + "");  
  19.                         i++;  
  20.                         progress.setProgress(current + step);  
  21.                         current = progress.getProgress();  
  22.                         Thread.sleep(1000);  
  23.                     }  
  24.                 } catch (InterruptedException e) {  
  25.                     e.printStackTrace();  
  26.                 }  
  27.             }  
  28.         }).start();  
  29.     }  
  30.     @Override  
  31.     protected void onDestroy() {  
  32.         super.onDestroy();  
  33.     }  
  34. }