android学习笔记之ProgressDialog的使用
在很多PC软件或手机软件中,我们都会看见 “加载中...” 类似的对话框,当然,在android应用程序中也是如此。如果我们想在android应用程序中使用这样的效果,那么就需要用到ProgressDialog。首先,我们来看一下ProgressDialog这个类。
ProgressDialog类继承自AlertDialog类,同样存放在android.app包中。ProgressDialog有两种形式,一种是圆圈旋转形式,一种是水平进度条形式,选择哪种形式可以通过以下两个属性值来设定:
static int
|
STYLE_HORIZONTAL Creates a ProgressDialog with a horizontal progress bar. |
static int
|
STYLE_SPINNER Creates a ProgressDialog with a ciruclar, spinning progress bar. |
注意,当设置为水平进度条形式时,进度的取值范围为0—10000。
ProgressDialog的构造方法有以下两种:
ProgressDialog(Context context) |
ProgressDialog(Context context, int theme) |
除了构造方法外,ProgressDialog还提供的如下的静态方法返回ProgressDialog对象:
static ProgressDialog
|
show(Context context, CharSequence title, CharSequence message) |
static ProgressDialog
|
show(Context context, CharSequence title, CharSequence message, boolean indeterminate) |
static ProgressDialog
|
show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable) |
static ProgressDialog
|
show(Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener)
|
需要留意的是第一个参数必须是目前运行的Activity的Context。
android的ProgressDialog必须要在后台程序运行完毕前,以dismiss()方法来关闭取得焦点的对话框,否则程序就会陷入无法终止的无穷循环中。在线程中,不得有任何更改Context或parent View的任何状态,文字输出等时间,因为线程里的Context与View并不属于parent,两者之间也没有关联。
我们以下面一个简单的程序来学习ProgressDialog的应用:
public class MainActivity extends Activity
{private Button button=null;public ProgressDialog dialog=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);this.button=(Button)super.findViewById(R.id.button);this.button.setOnClickListener(new OnClickListener() { @Overridepublic void onClick(View v) {final CharSequence strDialogTitle=MainActivity.this.getString(R.string.str_dialog_title);final CharSequence strDialogBody=MainActivity.this.getString(R.string.str_dialog_body);//显示Progress对话框dialog=ProgressDialog.show(MainActivity.this,strDialogTitle,strDialogBody,true);new Thread(){@Overridepublic void run(){try{//表示后台运行的代码段,以暂停3秒代替sleep(3000);}catch (InterruptedException e) {e.printStackTrace();}finally{//卸载dialog对象dialog.dismiss();}}}.start();}});}}
该程序布局管理器仅需一个Button组件(id为button)即可,此处不再给出。
注意,为了代码更加符合规范,本程序在strings.xml中定义了如下字符串资源:
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">demo2</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string><string name="execute">执行</string><string name="str_dialog_title">请稍等片刻</string><string name="str_dialog_body">正在执行...</string></resources>
程序运行效果截图:
转载于:https://www.cnblogs.com/dyllove98/archive/2013/06/09/3130042.html
android学习笔记之ProgressDialog的使用相关推荐
- Android学习笔记之ProgressDialog
mian.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...
- Android学习笔记(Android Studio)3-3(ProgressBar ProgressDialog)(加载进度条、转圈圈)UI组件之弹出组件
Android学习笔记3-3 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 3-3 ProgressBar & Progr ...
- Android学习笔记21:ImageView获取网络图片
Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
- Android学习笔记26:图片切换控件ImageSwitcher的使用
在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
- Android学习笔记:TabHost 和 FragmentTabHost
2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
最新文章
- Linux并发与同步专题 (1)原子操作和内存屏障
- Vue.js-Day07【项目实战(附带 完整项目源码)-day02:学习能力、字体图标(使用步骤)、在vue.js中使用jQuery】
- 大牛书单 | 数据库专题好书分享
- codeforces gym-101745 C-Infinite Graph Game 分块
- HDU 6188 Duizi and Shunzi
- kali的软件包安装源配置
- Linux网络编程之connect创建
- java网络通信技术示例:简单的聊天小程序
- SMOTE算法(人工合成数据)
- PolSARpro v6.0之Sentinel-1A Wishart与SVM监督分类
- airpods版本号_怎么看airpods版本号 苹果airpods查看固件版本教程
- mysql获取记录的插入时间_mysql 自动记录数据插入及最后修改时间
- ORAN传输封装类型
- PostgreSQL 连接(JOIN)
- python 将目录下的文件和子目录复制到指定文件夹
- 精华QT安装:qt-opensource-windows-x86-5.14.1
- CAD中如何把一个DWG文件里的块插入到另一个DWG中
- Java练习之复数运算
- 系统分析与设计——系统顺序图
- 计算机网络基础概念与重要定义汇总