2010.12.08——— android progressDialog

有时候 数据加载慢了 需要提示用户正在加载数据 这样有利于提高用户体验

例如

package com.huitu.project;import java.util.*;import com.huitu.pojo.GCXX2;import com.huitu.pojo.GC_GCXZ;import com.huitu.pojo.GC_RGNCD;import com.huitu.service.GCXXService;import com.huitu.service.QueryService;import com.huitu.util.JSONUtil;import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ImageButton;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Spinner;import android.widget.AdapterView.OnItemClickListener;public class GCXXActivity extends Activity {private Spinner sp_xzqh;private Spinner sp_jsxz;private Spinner sp_sgzt;private Spinner sp_sfyz;private Spinner sp_pxtj;private ImageButton bt_tianjian;private ListView listView;// 查询条件private String sgztid = null;private String sfyzid = null;private String tiaojian = null;private String xzdq = null;private String jsxz = null;private String gcmc = null;private String sgxkzh = null;private String jsdw = null;private String flat;private ProgressDialog pd;private Handler mProgressHandler;private SimpleAdapter adapter;private MyThread mt ;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.gcxx);pd = new ProgressDialog(this);pd.setIndeterminate(true);pd.setMessage("加载数据...");pd.setCancelable(true);mProgressHandler = new Handler() {            @Override            public void handleMessage(Message msg) {            int length = msg.getData().getInt("length");            switch (length){            case 1 :            pd.dismiss();            break;            case 2 :            listView.setAdapter(adapter);        listView.setOnItemClickListener(new ItemClickListen());        break;            }                        }        };sp_xzqh.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubpd.show();GC_RGNCD rgncd = (GC_RGNCD) sp_xzqh.getSelectedItem();xzdq = rgncd.getRGNCD();mt = new MyThread();mt.start();}});private void init(String xzdq, String jsxz, String gcmc, String jsdw,String sfyzid, String sgztid, String sgxkzh) {try {String json = GCXXService.query(xzdq, jsxz, gcmc, jsdw, sfyzid,sgztid, sgxkzh);System.out.println(json);List<GCXX2> list = JSONUtil.parseJSON_GCXX2_list(json);List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();// String[]sta={"无证","有证"};// String s;for (GCXX2 bean : list) {HashMap<String, Object> item = new HashMap<String, Object>();item.put("RN", bean.getRowId());item.put("GCMC", bean.getXMMC());item.put("JSDWMC", bean.getJSDWMC());item.put("GCZT_NAME", bean.getGCZT_NAME());item.put("STATUES", bean.getSTATUES());item.put("GCXZ", bean.getGCXZNAME());item.put("GCBM", bean.getGCBM());data.add(item);}adapter = new SimpleAdapter(GCXXActivity.this, data,R.layout.gcxxitem, new String[] { "RN", "GCMC", "JSDWMC","GCZT_NAME",  "GCXZ" }, new int[] {R.id.gcxx_rn, R.id.gcmc, R.id.jsdw, R.id.gczt, R.id.jsxz });// ll.setVisibility(View.VISIBLE);listView = (ListView) findViewById(R.id.listview);Message msg = new Message();msg.getData().putInt("length", 2);mProgressHandler.sendMessage(msg);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private final class ItemClickListen implements OnItemClickListener{public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView lv = (ListView)parent; HashMap<String, Object> map = (HashMap<String, Object>)lv.getItemAtPosition(position); String GCBM = map.get("GCBM").toString(); Intent intent = null; if(flat.equals("0")){ intent = new Intent(GCXXActivity.this,XZJLListActivity.class); }else{ intent = new Intent(GCXXActivity.this,XZJL_UploadActivity.class); } Bundle bundle = new Bundle(); bundle.putString("GCBM", GCBM); intent.putExtras(bundle); startActivity(intent);}        }private class MyThread extends Thread {public void run(){init( xzdq,  jsxz,  gcmc,  jsdw, sfyzid,  sgztid,  sgxkzh);Message msg = new Message();msg.getData().putInt("length", 1);mProgressHandler.sendMessage(msg);}}}



在新线程里面加载数据 然后通过Handler来更新主线程的UI 这里 进度条 和 ListView都需要更新


另外 在用的时候 有时候我是直接通过WebView加载的网页 也需要 用到进度条


package com.huitu.project;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebChromeClient;import android.webkit.WebView;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class GC_JBXXActivity extends Activity {private ImageView iv;private TextView tv_gcmc;private Button bn_gis;private Button bn_dtxx;private Button bn_baxx;private WebView wv;private String GCBM;private ProgressDialog pd;private Handler mProgressHandler;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.gc_jbxx);pd = new ProgressDialog(this);pd.setIndeterminate(true);pd.setMessage("加载数据...");pd.setCancelable(true);mProgressHandler = new Handler() {            @Override            public void handleMessage(Message msg) {            int length = msg.getData().getInt("length");            switch (length){            case 1 :            pd.dismiss();            break;            }                        }        };wv = (WebView)findViewById(R.id.webView);wv.getSettings().setJavaScriptEnabled(true);}@Overrideprotected void onResume() {super.onResume();pd.show();new Thread(){public void run(){wv.loadUrl("http://10.169.53.126:8080/CPJW_2/android_queryGCXXByGCBM.action?GCBM="+GCBM);Message msg = new Message();msg.getData().putInt("length", 1);mProgressHandler.sendMessage(msg);}}.start();}}



刚开始 我就是这样写的

new Thread(){public void run(){wv.loadUrl("http://10.169.53.126:8080/CPJW_2/android_queryGCXXByGCBM.action?GCBM="+GCBM);Message msg = new Message();msg.getData().putInt("length", 1);mProgressHandler.sendMessage(msg);}}.start();


但是 页面还没有加载完 进度条 就直接消失了
也就是 说 他是顺序执行的 加载页面时一个异步的过程 很是 郁闷

后来查了一下api 需要 WebChromeClient 这个类

wv.setWebChromeClient(new WebChromeClient(){public void onProgressChanged(WebView view,int progress){if(progress==100){Message msg = new Message();msg.getData().putInt("length", 1);mProgressHandler.sendMessage(msg);}}});


这样设置一下 progress值从0-100 100 就代表加载完成

然后

new Thread(){public void run(){wv.loadUrl("http://10.169.53.126:8080/CPJW_2/android_queryGCXXByGCBM.action?GCBM="+GCBM);}}.start();


这样 就ok了

更多相关文章

  1. Android应用程序组件Content Provider的共享数据更新通知机制分
  2. android mtk6732 camera otp 加载流程
  3. android 数据库 备份还原
  4. Android ListView SimpleAdapter ArrayList 数据更新问题 zhuan
  5. Android SQLiteOpenHelper(手机数据库)
  6. Android音频口数据通信开发;通过静态分析工具了解IPA实现 -- iOS/
  7. Android APP设计加载使用gif动图需要注意的一般性问题
  8. WebView之js调用Android类的方法传递数据 - 依凡王子

随机推荐

  1. 什么是消息验证码
  2. Vue3.0高阶实战:开发高质量音乐Web app
  3. 第118天:Python 之对象的比较与拷贝
  4. python utc时间转北京时间
  5. 第123天: Web 开发 Django 管理工具
  6. 第119天:Python 爬取豆瓣电影 top 250
  7. 热门的模型跨界,Transformer、GPT做CV任务
  8. 第120天:机器学习算法之 K 均值聚类
  9. 创建一个成熟的GitOps流水线,需要做哪些决
  10. 探探es 的class