当前位置: 代码迷 >> Android >> android进度条演练
  详细解决方案

android进度条演练

热度:72   发布时间:2016-05-01 17:32:46.0
android进度条演示
package org.lxh;import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ProgressActivity extends Activity {    static final int PROGRESS_DIALOG = 0;    Button button;    ProgressThread progressThread;    ProgressDialog progressDialog;       public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                button = (Button) findViewById(R.id.Button);        button.setOnClickListener(new OnClickListener(){            public void onClick(View v) {                showDialog(PROGRESS_DIALOG);            }        });          }    protected Dialog onCreateDialog(int id) {        switch(id) {        case PROGRESS_DIALOG:            progressDialog = new ProgressDialog(ProgressActivity.this);            //设置进度的风格            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);            //进度条的显示信息            progressDialog.setMessage("Loading...");            progressThread = new ProgressThread(handler);            //启动进度线程            progressThread.start();            return progressDialog;        default:            return null;        }    }        //定义一个处理器从线程和进度更新获取信息    final Handler handler = new Handler() {        public void handleMessage(Message msg) {            int total = msg.getData().getInt("total");            progressDialog.setProgress(total);            if (total >= 100){            	//进度完成关闭进度对话框                dismissDialog(PROGRESS_DIALOG);                progressThread.setState(ProgressThread.STATE_DONE);            }        }    };     //进度的线程    private class ProgressThread extends Thread {        Handler mHandler;        final static int STATE_DONE = 0;        final static int STATE_RUNNING = 1;        int mState;        int total;        ProgressThread(Handler h) {            mHandler = h;        }        public void run() {            mState = STATE_RUNNING;               total = 0;            while (mState == STATE_RUNNING) {                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                    Log.e("ERROR", "Thread Interrupted");                }                Message msg = mHandler.obtainMessage();                //Bundle负责数据的传递                Bundle b = new Bundle();                b.putInt("total", total);                msg.setData(b);                //把信息保存到处理器中                mHandler.sendMessage(msg);                total++;            }        }        /* sets the current state for the thread,         * used to stop the thread */        public void setState(int state) {            mState = state;        }    }}

  相关解决方案