博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android学习笔记之ProgressDialog的使用
阅读量:6833 次
发布时间:2019-06-26

本文共 2331 字,大约阅读时间需要 7 分钟。

       在很多PC软件或手机软件中,我们都会看见 “加载中...” 类似的对话框,当然,在android应用程序中也是如此。如果我们想在android应用程序中使用这样的效果,那么就需要用到ProgressDialog。首先,我们来看一下ProgressDialog这个类。

       ProgressDialog类继承自AlertDialog类,同样存放在android.app包中。ProgressDialog有两种形式,一种是圆圈旋转形式,一种是水平进度条形式,选择哪种形式可以通过以下两个属性值来设定:

 

static int
          Creates a ProgressDialog with a horizontal progress bar.
static int
          Creates a ProgressDialog with a ciruclar, spinning progress bar.

注意,当设置为水平进度条形式时,进度的取值范围为0—10000。

 

ProgressDialog的构造方法有以下两种:

 

( context)
           
( context, int theme)
           

 

 除了构造方法外,ProgressDialog还提供的如下的静态方法返回ProgressDialog对象:

 

static  ( context,  title,  message)
           
static  ( context,  title,  message, boolean indeterminate)
           
static  ( context,  title,  message, boolean indeterminate, boolean cancelable)
           
static  ( context,  title,  message, boolean indeterminate, boolean cancelable,  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;	@Override	protected 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() 		{						@Override			public 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()				{					@Override					public void run()					{						try						{							//表示后台运行的代码段,以暂停3秒代替							sleep(3000);						}						catch (InterruptedException e) 						{							e.printStackTrace();						}						finally						{							//卸载dialog对象							dialog.dismiss();						}					}									}.start();			}		});	}}

该程序布局管理器仅需一个Button组件(id为button)即可,此处不再给出。

注意,为了代码更加符合规范,本程序在strings.xml中定义了如下字符串资源:

demo2
Settings
Hello world!
执行
请稍等片刻
正在执行...

程序运行效果截图:

 

你可能感兴趣的文章
我的友情链接
查看>>
iOS调用系统摄像头和相册
查看>>
mysql文件导入办法(直接copy数据库文件)
查看>>
善用WIN四把利剑提升服务器稳定性
查看>>
Hadoop学习笔记《关于HDFS》
查看>>
【二叉树】线索化二叉树
查看>>
Office365混合部署之用户权限(角色)分配
查看>>
logback配置
查看>>
rhel6配置多用户tiger vnc server
查看>>
Mac环境下svn的使用
查看>>
Pig读写HBase数据
查看>>
NumPy基础(一)
查看>>
菜鸟学Linux 第104篇笔记 varnish
查看>>
ATEN宏正盛装出席Infocomm China 2016
查看>>
并发数/QPS/PV/ 服务器响应时间公示
查看>>
我的友情链接
查看>>
RHEL5下安装oracle10g的完整过程
查看>>
Linux之sort的用法
查看>>
log4j存储日志,日志和错误日志单独处理
查看>>
我的友情链接
查看>>