android进度条演示
16lz
2021-01-26
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; } }}
更多相关文章
- Android:多线程的HttpClient
- ImageLoader的原理
- 你追我赶进度条
- android 天气预报 界面
- Android(安卓)命令工具
- [Android][自定义进度条]④--圆形进度条的onMeasure
- CrashHandler 日志信息上传
- android多线程Handler
- Android获取CPU,内存等系统信息方法