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;        }    }}

更多相关文章

  1. Android:多线程的HttpClient
  2. ImageLoader的原理
  3. 你追我赶进度条
  4. android 天气预报 界面
  5. Android(安卓)命令工具
  6. [Android][自定义进度条]④--圆形进度条的onMeasure
  7. CrashHandler 日志信息上传
  8. android多线程Handler
  9. Android获取CPU,内存等系统信息方法

随机推荐

  1. Android(安卓)Linux 内核介绍
  2. Android将允许纯C/C++开发应用
  3. android:layout_gravity 和 android:grav
  4. android升级adt和sdk之后无法识别SDK Loc
  5. Android的一些基本概念
  6. 谷歌正式发布Android(安卓)2.2手机操作平
  7. 关于Android(安卓)关于EditText输入限制
  8. Android(安卓)创建与解析XML(六)—— 比较
  9. android studio不会导入及出现各种问题怎
  10. Android之Shape和state_enabled使用总结