ProgressDialog的使用

Android原生的ProgressDialog分为两类
1. 一类是进度条不明确的
2. 另一类是进度条明确的
展示的形式有圆形和水平进度条
注意:对于不明确的进度条才可以设置Indeterminate为true,对于明确的进度条,需要设置为false。
布局文件XML如下所示:
主要是通过按钮触发进度条

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context="com.android.progressbar.MainActivity"><Button
        android:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="进度条1"/><Button
        android:id="@+id/btn2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="进度条2"/><Button
        android:id="@+id/btn3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="进度条3"/></LinearLayout>

对于进度条1,采用的是默认的圆形布局,通过调用静态的方法即可实现(是属于进度条的进度值不明确的情况,滚动条自动在最大值和最小值之间来回滚动,形成一个动画的效果,这个只是告诉别人,“我正在工作”,但不能提示工作进度到了哪个阶段,主要是进行一些无法确定操作时间的任务时作为提示)
对于进度条2,采用的是水平布局,也是属于进度值不明确的情况。
对于进度条3,采用的是水平布局,模拟的是进度值明确的情况。
对于进度条
MainActivity如下所示:

package com.android.progressbar;import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener{public Button btn1,btn2,btn3;//分别表示三个不同的进度条final static int MAX_PROGRESS=100;private int[]data=new int[50];public int progressStatus=0;public int hasData=0;public ProgressDialog pd1,pd2;//定义两个进度条对话框//定义一个Handler用于处理更新进度条Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {//表明是由该程序发送的if(msg.what==0x123){pd2.setProgress(progressStatus);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1= (Button) findViewById(R.id.btn1);btn2= (Button) findViewById(R.id.btn2);btn3= (Button) findViewById(R.id.btn3);btn1.setOnClickListener(this);btn2.setOnClickListener(this);btn3.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.btn1:showSpinner(v);break;case R.id.btn2:showProgress(v);break;case R.id.btn3:showIndeterminate(v);break;}}public void showSpinner(View source){//调用静态方法显示环形进度条ProgressDialog.show(this,"任务执行中","任务执行中请稍等",false,true);}public void showIndeterminate(View source){pd1=new ProgressDialog(MainActivity.this);pd1.setTitle("任务正在执行中");//设置标题pd1.setMessage("任务正在执行中,敬请等待...");//设置消息pd1.setCancelable(true);//设置进度条是不是可以取消pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置对话框的进度条的风格pd1.setIndeterminate(true);//设置对话框进度条是否显示进度pd1.show();//显示进度条}public void showProgress(View source){//将进度条的完成进度重设为0progressStatus=0;//重新开始填充数组hasData=0;pd2=new ProgressDialog(MainActivity.this);pd2.setMax(MAX_PROGRESS);//设置对话框的标题pd2.setTitle("任务完成百分比");//设置对话框显示的内容pd2.setMessage("耗时任务的完成百分比");//设置对话框不能用“取消”按钮关闭pd2.setCancelable(false);//设置对话框的进度条风格pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置对话框的进度条是否显示进度pd2.setIndeterminate(false);pd2.show();new Thread(){@Overridepublic void run() {while(progressStatus<MAX_PROGRESS){//获取耗时操作的完成百分比progressStatus=MAX_PROGRESS*doWork()/data.length+5;//发送消息到handlerhandler.sendEmptyMessage(0x123);}if(progressStatus>=MAX_PROGRESS){//关闭对话框pd2.dismiss();}}}.start();}//模拟一个耗时操作public int doWork(){data[hasData++]=(int)(Math.random()*100);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}return hasData;}
}

Android开发实战之——ProgressDialog的使用(一)相关推荐

  1. Xamarin Android开发实战(上册)

    Xamarin Android开发实战(上册)大学霸内部资料 试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamarin ...

  2. 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...

  3. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  4. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  5. android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...

    转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...

  6. [魔乐科技]Android开发实战经典视频教程

    http://down.51cto.com/zt/2757/6/ Android开发实战经典视频教程 http://down.51cto.com/data/407121 03_传智播客Android视 ...

  7. Android开发实战---一个汽车销售APP,有汽车列表页、汽车详情页、贷款计算页3个界面。

    Android开发实战设计并实现一个汽车销售APP,要求至少有汽车列表页.汽车详情页.贷款计算页3个界面. 已开源:https://github.com/yan123666/wlf 实现结果: 1.计 ...

  8. 阅读《名师讲坛--Android开发实战经典》

    一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...

  9. Android刘海屏、水滴屏全面屏适配详解,android开发实战湖南师范大学出版社

    android:resizeableActivity=["true" | "false"] 如果该属性设置为 true,Activity 将能以分屏和自由形状模 ...

  10. 安卓开发陀螺仪!首发10万字Android开发实战文档,进阶学习资料!

    Gradle是什么? Gradle是一种构建语言,目前是Android的默认构建工具,我们编写的编译脚本,其实就是玩Gradle的API,所以从它更底层的意义上看,是一个编程框架. 因为涉及的内容很多 ...

最新文章

  1. port常用和不常用端口一览表
  2. 不忘初心helloworld,IMX6入门学习笔记
  3. python接口测试框架设计_Python3简易接口自动化测试框架设计与实现(中)
  4. 牛客 - Alice and Bob(尺取+二分)
  5. maven 主pom 配置不同环境指定不同配置文件以及打包参数
  6. 用户 'IIS APPPOOL\***' 登录失败(转载)
  7. memcached高速缓存学习笔记002---telnet操作memcached
  8. linux --- inotify 文件系统变化通知机制
  9. 2005-2018 年软考软件设计师 真题分享
  10. prometheus使用cAdvisor监控容器
  11. java 上传文件接口_Java接口实现文件上传
  12. FusionCompute产品介绍
  13. MIPS计算公式总结
  14. 阿里云双十一服务器注册流程
  15. Sony WH-1000XM3降级到2.00
  16. PHP 记录访客的浏览信息
  17. 徐小明:探寻股市下跌的真正原因
  18. 《23种设计模式之原型模式(2种实现)》
  19. Qt 设置Widget背景图片并实现透明度的三种方式
  20. 水下声呐定位声线跟踪算法

热门文章

  1. C# web 读取excel并导入数据库
  2. 在MT4上使用KDJ指标
  3. ipv6-hosts
  4. 对于Keli-μVision,Error:Could not load file“*.axf” Debugger aborted!解决方案
  5. 天翼校园网电脑端实现共享WiFi,解决一机一账号上线的问题! 亲测有效!!!
  6. oracle数据库和sql有什么区别,sql server 和oracle数据库的区别
  7. Centos7安装SCIP with AMPL
  8. java实现打印菱形(任意输入数字打印任意阶菱形)
  9. DSP28335的RS232串口通讯试验
  10. microsoft store 安装包_LOL英雄联盟手游官方安装包