浏览 5288 次
锁定老帖子 主题:Android网络加载时显示进度条
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-16
由于Android的界面更新只能通过自己的UI线程进行操作,所以我们需要用到Handler在进行更新界面的操作。 1、声明变量 private Handler handler = new Handler(); private ProgressDialog progressDialog = null; 2、在开始进行网络连接时显示进度条对话框 progressDialog = ProgressDialog.show(MyActivity.this, "请稍等...", "获取数据中...", true); 3、在handler.post中进行界面更新 public void setListAdapter(){ handler.post(new Runnable() { public void run() { //将获取到的数据更新到列表中 MyListView.setAdapter(saImageItems); } } }); 4、开个新的线程进行网络连接获取数据 new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub //向服务器请求数据 mapList=MyAPI.getAllDatas(); setListAdapter(mapList); //更新完列表数据,则关闭对话框 progressDialog.dismiss(); }}).start(); 整个过程就这样完成了 还有另外一种进度条的提示,是在对话框的标题上有圆形进度条进行提示。 1、不能将Activity布局设计为无标题; 并在setContentView()之前设置一下标题布局形式: requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 2、在连接网络前,设置进度条为可视状态 setProgressBarIndeterminateVisibility(true); 3、开一个新的线程向服务器请求数据,获取数据后,将进度条设为不可视状态 new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub try { todosomething(); setProgressBarIndeterminateVisibility(false); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}).start(); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-16
无图无真相
|
|
返回顶楼 | |
发表时间:2011-09-19
用AsynTask实现或许更好
|
|
返回顶楼 | |
发表时间:2011-09-21
jstl1point0 写道 无图无真相
看尽天下好图 心中自然有图 |
|
返回顶楼 | |
发表时间:2011-09-26
在此基础上,设置滚动条的样式就更完美了。
|
|
返回顶楼 | |