• Android网络加载时显示进度条(转)


    在联网获取数据时,用一个进度条提示用户正在加载数据,以下讲一下我是如何实现这种效果的。
      
      由于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();

  • 相关阅读:
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
  • 原文地址:https://www.cnblogs.com/zhwl/p/2178603.html
Copyright © 2020-2023  润新知