论坛首页 移动开发技术论坛

Android网络加载时显示进度条

浏览 5288 次
精华帖 (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();
   发表时间:2011-09-16  
无图无真相
0 请登录后投票
   发表时间:2011-09-19  
用AsynTask实现或许更好
0 请登录后投票
   发表时间:2011-09-21  
jstl1point0 写道
无图无真相

看尽天下好图 心中自然有图
0 请登录后投票
   发表时间:2011-09-26  
在此基础上,设置滚动条的样式就更完美了。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics