全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

老生常谈ProgressBar、ProgessDialog的用法

一、ProgressBar

1. 常用类型

1.1 不确定式圆形进度条

style="@android:style/Widget.Holo.Light.ProgressBar"
style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Large"
...

没有显示进度,可作为过场动画。有大、中、小三种大小,默认为中。

1.2 条形进度条

style="@android:style/Widget.ProgressBar.Horizontal"
style="@android:style/Widget.DeviceDefault.Light.ProgressBar.Horizontal"
...

带有显示进度。

1.3 标题栏不确定式进度条

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(true);

在标题栏右侧显示的无显示进度的圆形进度条。

1.4 标题栏条形进度条

requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarVisibility(true);

在标题栏顶部显示的条形进度条,可通过setProgess(int)设置当前进度,最大值为10000。

2. 常用控件属性

<!--最大显示进度-->
android:max
<!--第一显示进度-->
android:progress
<!--第二显示进度-->
android:secondaryProgress
<!--置是否精确显示;true为不精确,false为精确-->
android:indeterminate
<!--加载自定义样式-->
android:progressDrawable

3. 自定义样式

通过控件的android:progressDrawable属性引用自定义的drawable文件实现。一般需定义三个内容:背景、第一进度、第二进度。

范例:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <!--背景样式-->
  <item android:id="@android:id/background">
    <shape>
      <!--圆角-->
      <corners android:radius="10dip" />
      <!--填充色-->
      <solid android:color="#dddddd" />
    </shape>
  </item>

  <!--第二进度样式-->
  <item android:id="@android:id/secondaryProgress">
    <clip>
      <shape>
        <corners android:radius="10dip" />
        <solid android:color="#78bb78" />
      </shape>
    </clip>
  </item>

  <!--第一进度样式-->
  <item android:id="@android:id/progress">
    <clip>
      <shape>
        <corners android:radius="10dip" />
        <solid android:color="#55bb55" />
      </shape>
    </clip>
  </item>

</layer-list>

贴张效果图:

4. 关键方法

//设置第一进度
setProgress(int)
//设置第二进度
setSecondaryProgress(int)
//获取第一进度
getProgress()
//获取第二进度
getSecondaryProgress()
//增加或减少第一进度
incrementProgressBy(int)
//增加或减少第二进度
incrementSecondaryProgressBy(int)
//获取进度最大值
getMax()

5. 范例

布局比较简单,线性布局,竖直排列,这里就不贴代码了,直接贴张图:

Java:

public class ProgessBarActivity extends Activity implements View.OnClickListener{

  private ProgressBar progressBar;
  private TextView text;
  private Button addFirst;
  private Button addSecond;
  private Button subFirst;
  private Button subSecond;
  private Button reset;
  private int first;
  private int second;
  private int max;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_progess_bar);

    init();

  }

  private void init() {
    progressBar = (ProgressBar) findViewById(R.id.progress_bar);
    text = (TextView) findViewById(R.id.text);
    addFirst = (Button) findViewById(R.id.add_first);
    subFirst = (Button) findViewById(R.id.sub_first);
    addSecond = (Button) findViewById(R.id.add_second);
    subSecond = (Button) findViewById(R.id.sub_second);
    reset = (Button) findViewById(R.id.reset);

    //获取第一、第二、最大进度
    first = progressBar.getProgress();
    second = progressBar.getSecondaryProgress();
    max = progressBar.getMax();

    addFirst.setOnClickListener(this);
    addSecond.setOnClickListener(this);
    subFirst.setOnClickListener(this);
    subSecond.setOnClickListener(this);
    reset.setOnClickListener(this);
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.add_first:
        //第一进度加10
        progressBar.incrementProgressBy(10);
        break;
      case R.id.add_second:
        //第二进度加10
        progressBar.incrementSecondaryProgressBy(10);
        break;
      case R.id.sub_first:
        progressBar.incrementProgressBy(-10);
        break;
      case R.id.sub_second:
        progressBar.incrementSecondaryProgressBy(-10);
        break;
      case R.id.reset:
        //重置为初始数值
        progressBar.setProgress(30);
        progressBar.setSecondaryProgress(60);
        break;
    }
    //更新文本内容
    text.setText("第一进度为" + (int) (1.0*first/max*100) + "%,第二进度为" + (int) (1.0*second/max*100) + "%");
  }
}

二、ProgressDialog

1. 构造函数

ProgressDialog(Context context)
ProgressDialog(Context context, int theme)//theme为对话框样式

2. 关键方法

//设置进度条样式
setProgressStyle(int style)
//设置对话框标题
setTitle(String title)
//设置对话框本文信息
setMessage(CharSequence message)
//设置对话框图标
setIcon(Drawable d)
//设置按钮,whichButton为按钮类型,text为按钮名称,listener为监听器
setButton(int whichButton, CharSequence text, OnClickListener listener)
//显示对话框
show()

此外,除了这几个方法,ProgressDialog也可使用上面ProgressBar中介绍的方法。

3. 范例

public class ProgressDialogActivity extends Activity {

  private ProgressDialog proDialog;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_progress_dialog);

    findViewById(R.id.show).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //新建对话框
        proDialog = new ProgressDialog(ProgressDialogActivity.this);
        //设置进度条样式
        proDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //设置对话框标题
        proDialog.setTitle("初识ProgressDialog");
        //设置提示对话框文本
        proDialog.setMessage("好好学习,天天向上!");
        //设置对话框显示图标
        proDialog.setIcon(R.drawable.ic_launcher);
        //设置进度条最大进度,默认为10000
        proDialog.setMax(100);
        //设置初始第一进度
        proDialog.incrementProgressBy(30);
        //设定取消按钮
        proDialog.setButton(DialogInterface.BUTTON_POSITIVE, "取消", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
          }
        });
        //显示对话框
        proDialog.show();
      }
    });
  }
}

以上这篇老生常谈ProgressBar、ProgessDialog的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# ProgressBar  # ProgessDialog用法  # Android ProgressDialog进度条使用详解  # Android 七种进度条的样式  # Android 中通过实现线程更新Progressdialog (对话进度条)  # 解析android中ProgressBar的用法  # Android ProgressBar进度条使用详解  # 进度条ProgressBar及ProgressDialog(实例)  # 对话框  # 进度条  # 自定义  # 标题栏  # 给大家  # 不确定  # 默认为  # 就不  # 老生常谈  # 也可  # 希望能  # 三种  # 天天向上  # 这篇  # 可通过  # 这几个  # 小编  # 值为  # 大家多多  # 好好学习 


相关文章: 如何通过山东自助建站平台快速注册域名?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何在局域网内绑定自建网站域名?  宝塔新建站点报错如何解决?  建站VPS选购需注意哪些关键参数?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  教学论文网站制作软件有哪些,写论文用什么软件 ?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  公众号网站制作网页,微信公众号怎么制作?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何注册花生壳免费域名并搭建个人网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  如何通过PHP快速构建高效问答网站功能?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何零成本快速生成个人自助网站?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  宝塔面板创建网站无法访问?如何快速排查修复?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何在服务器上配置二级域名建站?  Python lxml的etree和ElementTree有什么区别  高端建站三要素:定制模板、企业官网与响应式设计优化  建站org新手必看:2024最新搭建流程与模板选择技巧  淘宝制作网站有哪些,淘宝网官网主页?  建站之星如何助力网站排名飙升?揭秘高效技巧  如何在阿里云域名上完成建站全流程?  高防服务器如何保障网站安全无虞?  香港服务器租用费用高吗?如何避免常见误区?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  名字制作网站免费,所有小说网站的名字?  如何快速搭建高效香港服务器网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  建站之星北京办公室:智能建站系统与小程序生成方案解析  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何通过可视化优化提升建站效果?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何用搬瓦工VPS快速搭建个人网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  移民网站制作流程,怎么看加拿大移民官网?  建站主机选择指南:服务器配置与SEO优化实战技巧  建站之星安装失败:服务器环境不兼容?  建站主机类型有哪些?如何正确选型  如何快速重置建站主机并恢复默认配置?  已有域名能否直接搭建网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  c# 在ASP.NET Core中管理和取消后台任务 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。