Android开发实战之——ProgressDialog的使用(一)
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的使用(一)相关推荐
- Xamarin Android开发实战(上册)
Xamarin Android开发实战(上册)大学霸内部资料 试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamarin ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- 《Java和Android开发实战详解》——1.2节Java基础知识
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...
转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...
- [魔乐科技]Android开发实战经典视频教程
http://down.51cto.com/zt/2757/6/ Android开发实战经典视频教程 http://down.51cto.com/data/407121 03_传智播客Android视 ...
- Android开发实战---一个汽车销售APP,有汽车列表页、汽车详情页、贷款计算页3个界面。
Android开发实战设计并实现一个汽车销售APP,要求至少有汽车列表页.汽车详情页.贷款计算页3个界面. 已开源:https://github.com/yan123666/wlf 实现结果: 1.计 ...
- 阅读《名师讲坛--Android开发实战经典》
一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...
- Android刘海屏、水滴屏全面屏适配详解,android开发实战湖南师范大学出版社
android:resizeableActivity=["true" | "false"] 如果该属性设置为 true,Activity 将能以分屏和自由形状模 ...
- 安卓开发陀螺仪!首发10万字Android开发实战文档,进阶学习资料!
Gradle是什么? Gradle是一种构建语言,目前是Android的默认构建工具,我们编写的编译脚本,其实就是玩Gradle的API,所以从它更底层的意义上看,是一个编程框架. 因为涉及的内容很多 ...
最新文章
- port常用和不常用端口一览表
- 不忘初心helloworld,IMX6入门学习笔记
- python接口测试框架设计_Python3简易接口自动化测试框架设计与实现(中)
- 牛客 - Alice and Bob(尺取+二分)
- maven 主pom 配置不同环境指定不同配置文件以及打包参数
- 用户 'IIS APPPOOL\***' 登录失败(转载)
- memcached高速缓存学习笔记002---telnet操作memcached
- linux --- inotify 文件系统变化通知机制
- 2005-2018 年软考软件设计师 真题分享
- prometheus使用cAdvisor监控容器
- java 上传文件接口_Java接口实现文件上传
- FusionCompute产品介绍
- MIPS计算公式总结
- 阿里云双十一服务器注册流程
- Sony WH-1000XM3降级到2.00
- PHP 记录访客的浏览信息
- 徐小明:探寻股市下跌的真正原因
- 《23种设计模式之原型模式(2种实现)》
- Qt 设置Widget背景图片并实现透明度的三种方式
- 水下声呐定位声线跟踪算法
热门文章
- C# web 读取excel并导入数据库
- 在MT4上使用KDJ指标
- ipv6-hosts
- 对于Keli-μVision,Error:Could not load file“*.axf” Debugger aborted!解决方案
- 天翼校园网电脑端实现共享WiFi,解决一机一账号上线的问题! 亲测有效!!!
- oracle数据库和sql有什么区别,sql server 和oracle数据库的区别
- Centos7安装SCIP with AMPL
- java实现打印菱形(任意输入数字打印任意阶菱形)
- DSP28335的RS232串口通讯试验
- microsoft store 安装包_LOL英雄联盟手游官方安装包