面試題之10秒跑完進度條
阿新 • • 發佈:2019-02-19
方式一:使用Handler
Java程式碼- public class ProgressActivity extends Activity implements Runnable {
- private ProgressBar progress;
- Handler h = new Handler();
- private int max=100,current,step;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_progress);
- progress = (ProgressBar) findViewById(R.id.progress);
- progress.setMax(max);
- progress.setProgress(0);
- step = max/10;
- h.post(this);
- }
- @Override
- protected void onDestroy() {
-
super
- }
- @Override
- public void run() {
- current = progress.getProgress();
- progress.setProgress(current+step);
- h.postDelayed(this, 1000);
- }
- }
方式二:使用自定義執行緒
有些微不對勁
Java程式碼-
public class ProgressActivity extends Activity {
- private ProgressBar progress;
- private int max = 100, current = 0, step = 0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_progress);
- progress = (ProgressBar) findViewById(R.id.progress);
- progress.setMax(max);
- progress.setProgress(0);
- step = max / 10;
- new Thread(new Runnable() {
- int i = 1;
- @Override
- public void run() {
- try {
- while (max != progress.getProgress()) {
- Log.i("次數", i + "");
- i++;
- progress.setProgress(current + step);
- current = progress.getProgress();
- Thread.sleep(1000);
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- }
- }