关于进度对话框
进度对话框与普通对话框一样,最多可以添加3个按钮;进度条的默认风格是圆形的,圆形进度对话框中的进度圆圈只是一个动画图像,并没有任何表示进度的功能,这种对话框一般在很难估计准确时间和进度时使用.
看如下示意图
可以使用如下代码将进度条设置为水平进度条风格:
ProgressDialog pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
要实现进度随着时间的变化而不断递增,需要使用多线程及定时器来完成这个工作,实现的方法是编写一个Handler类的子类,并覆盖Handler类的handleMessage方法,在该方法中设置新的进度和系统下一次调用handleMessage方法的时间间隔(单位ms)
注意: 使用sendEmptyMessage方法中能使用handleMessage 方法执行一次,要想实现以一定时间间隔循环执行handleMessage方法,需要在handleMessage方法中调用sendEmptyMessageDelayed方法设置handleMessage方法下一次被告调用时等待的时间,这样就形成一个循环调用的效果.
关键代码:
progress++;
progressDialog.incrementProgressBy(10); //将进度递增 10
//随机设置下一次递增进度(调用handleMessage())的时间间隔, 第1个参数表示消息代码,第2个参数表示下一次调用handleMessage要等待的毫秒数
progressHandler.sendEmptyMessageDelayed(10, 50 + new Random().nextInt(500));
具体代码请参见 ch04_progressdialog工程
------------------------------------------------------------------------------------
关于自定义对话框,特别注意:这里说的自定义是里面的组件元素类型、个数,显示风格是Android系统风格,与那种完全由开发人员编写的图片,标题所产生的全新风格又是另一回事. 全新风格的对话框示意图如下
代码请参见 CustomDialog工程
AlertDialog.Builder 类的setView方法可以将视图对象添加到当前的对话框中。可以使用下面的形式将一个视图对象添加到对话框中:
new AlertDialog.Builder(this).setIcon(R.drawable.alert_dialog_icon).setTitle("自定义对话框")
.setView(...) ————————— 将视图添加到对话框
.show();
示意图
具体用法 请参见 ch04_logindialog工程
---------------------------------------------------------------------------------
关于 Activity 托管对话框
定义: Activity托管对话框是指通过Activity 的onCreateDialog方法 创建Dialog,但是onCreateDialog并不直接被调用,
Activity类首先调用showDialog方法,然后由showDialog方法调用onCreateDialog方法
示意图参见
具体代码请参见 ch04_activitydialog工程