程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> progress bar-關於這段ProgressBar的代碼看不懂

progress bar-關於這段ProgressBar的代碼看不懂

編輯:編程綜合問答
關於這段ProgressBar的代碼看不懂

package com.example.progressbartest;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.ProgressBar;

public class MainActivity extends ActionBarActivity {

private int[] data = new int[100];
int hasData = 0;
int status = 0;
ProgressBar bar, bar2;

Handler mHandler = new Handler() {

    public void handleMessage(Message msg) {

        if (msg.what == 0x111) {
            bar.setProgress(status);
            bar2.setProgress(status);
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bar=(ProgressBar) findViewById(R.id.bar);
    bar2=(ProgressBar) findViewById(R.id.bar2);
    new Thread()
    {
            public void run() {
        while(status<100){
            status=doWork();
            mHandler.sendEmptyMessage(0x111);
        }   
            }
            }.start();

    }
    public int doWork(){

        data[hasData++]=(int)(Math.random()*100);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {

            e.printStackTrace();

        }
        return hasData;
}

}

最佳回答:


 Handler mHandler = new Handler() {

    public void handleMessage(Message msg) {

        if (msg.what == 0x111) {//消息類型,與sendEmptyMessage(0x111)中傳輸的消息類型0x111是一致的
            bar.setProgress(status);//根據隨機的數目更新進度條
            bar2.setProgress(status);
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bar=(ProgressBar) findViewById(R.id.bar);
    bar2=(ProgressBar) findViewById(R.id.bar2);
    new Thread()
    {
            public void run() {
        while(status<100){
            status=doWork();//產生一百個隨機數個數
            mHandler.sendEmptyMessage(0x111);//因為在thread中是無法直接更新UI的,必須在UI現場中才能更新,所以通過handler發送消息,該消息由handler的handleMessage接收
        }   
            }
            }.start();

    }
    public int doWork(){

        data[hasData++]=(int)(Math.random()*100);  
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {

            e.printStackTrace();

        }
        return hasData;
}
Wei_Smile
danielinbiti
danielinbiti
Wei_Smile
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved