Android开发之Dialog

本文介绍了Android中常见的三种Dialog的使用方法:日期选择器Dialog、提示对话框和进度条Dialog。详细讲解了如何创建和定制这些对话框,包括设置默认时间和回调函数、自定义提示信息和按钮事件,以及进度条的更新机制。
摘要由CSDN通过智能技术生成
在Android系统中,有各式各样的菜单和对话框,这些是如何来使用的呢?下面,我们将一一讲解
首先,讲述下用的比较多的时间日期选择器,如图1 Android开发之Dialog
Android开发之Dialog
图 1
在Android系统中,显示对话框统一用一个方法
showDialog(int id);
id标识了我们要显示哪种类型的对话框,为此,我们定义一个显示日期对话框的ID
private static final int DIALOG_DATEPICKER = 1;
然后覆盖Activity的protected Dialog onCreateDialog(int id)方法,判断id,来决定显示哪一种对话框
Calendar calendar = Calendar.getInstance();
switch (id) {
 case DIALOG_DATEPICKER:
return new DatePickerDialog(this,id, new OnDateSetListener(){
public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
           Toast.makeText(DataPickerActivity.this, "现在时间是:"+year+" "+monthOfYear+"                           "+dayOfMonth, 1).show();
         }
}, calendar.get(Calendar.YEAR), Calendar.MONTH, Calendar.DAY_OF_MONTH);
default:
return null;
}
这里 new DatePickerDialog(this,id, new OnDateSetListener()...);用来创建一个日期对话框,并且第三个参数为一个实现了OnDateSetListener的匿名内部类,其中的回调方法将在用户点击"set"之后调用,而最后三个参数规定时间选择器上的默认时间是现在。


第二个要讲述的是提升对话框,如下图2
Android开发之Dialog
图 2
原理与日期选择对话框类似,第一步,定义一个显示该对话框的ID
private final static  int WELCOME = 2;
然后在
protected Dialog onCreateDialog(int id)
判断在id为WELCOME 时应该创建的对话框
switch(id){
case WELCOME:
return new AlertDialog.Builder(MainActivity.this).setIcon(R.drawable.find).
   setTitle("欢迎").setMessage("欢迎使用本程序").setPositiveButton("确定", 
             new  OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {
                    //...点击确定按钮做得事
                  }
              }).create();
default:
return null;
}
很简单,只要对照图2和上列代码对比下即可,这里不再赘述!

最后要讲述的是进度条对话框,我们的应用有的时候在处理一些事情的时候,用的时间比较长,这里就需要在前台给用户一个展示,以说明我们的这一步进行到什么样的程度了,进度条是最好的方式,如图3

Android开发之Dialog
图 3 
我们模拟了一个处理事件的过程,每过100毫秒,进度条增加1
首先,与以上两种Dialog类似,必须定义一个ID
private static final int DIALOG_PROGRESS = 3;
然后在创建对话框的时候根据该ID来创建相应的对话框
switch (id) {
case DIALOG_PROGRESS:
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置格式为水平
progressDialog.setMax(100);
progressDialog.setProgress(0);
return progressDialog;
default:
return null;
}
下面先简要讲述下什么是Android中的Handler(关于Handle将单独列出一小节讲述)
Handler主要是用来跟UI主线程交互用。 比如:
1、你用handler发送一个message,然后在handler的线程中来接收、处理该消息,以避免直接在UI主线程中处理事务导致影响UI主线程的其他处理工作。
2、你可以将handler对象传给其他进程,以便在其他进程中通过handler给你发送事件。
3、通过handler的延时发送message,可以延时处理一些事务的处理
最后,想要使得进度条对话框根据什么来改变位置,我们创建一个Handler对象,然后在handleMessage方法中实现对进度条位置的改变
private static final int MSG_PROGRESS = 11;
Handler pHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case MSG_PROGRESS:
if(progressDialog.getProgress()>=MAXPROGRESS){
  progressDialog.dismiss();
}else{
progressDialog.incrementProgressBy(1);
pHandler.sendEmptyMessageDelayed(MSG_PROGRESS, 100);
}//设置延迟时间
break;
 default:break;
}
}
};
showDialog(DIALOG_PROGRESS);//显示进度条对话框
pHandler.sendEmptyMessage(MSG_PROGRESS);//表示是MSG_PROGRESS消息,这一句之后将循环调用handleMessage方法实现进度条的增加

至此,三个Dialog简要介绍完毕!

Android开发之Dialog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值