您的位置:首页 > 移动开发 > Android开发

Android中的对话框

2016-04-17 18:41 369 查看

前言

  Android 开发中是百分之一万会用到对话框的,对话框是一种有效的与用户进行信息交互的手段,对话框的种类也很多,这里介绍四种常用的对话框 —— 普通对话框(确定取消对话框)、单选对话框、多选对话框、进度条对话框。

  其中前三种的创建方式大同小异,用的是同一个类AlertDialog,但是不能直接new,因为这个类的构造方法是Protected,也就是说只有同一个包下或者子类才能去new,但google这样设计是有道理的,因为google为了方便程序猿更有效统一的创建对话框,给我们提供了一套创建对话框的机制;进度条对话框使用的是ProgressDialog类,可以直接去new。

先来看一下界面(不要在意丑的细节)



1.确定取消对话框

//点击按钮创建对话框
public void click(View view) {
//创建对话框构建器对象,类似工厂模式
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置图标(可选)
builder.setIcon(android.R.drawable.ic_dialog_alert);
//设置标题(可选)
builder.setTitle("警告");
设置内容(可选)
builder.setMessage("这是一个警告信息,您确定要退出吗");

//设定确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"确定按钮点击",Toast.LENGTH_SHORT).show();
}
});

//设定取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"取消按钮点击",Toast.LENGTH_SHORT).show();
}
});

//使用构建器创建出对话框对象
AlertDialog dialog = builder.create();
//显示对话框,不执行这句话对话框是不会显示的....
dialog.show();
//可以用下面的方式代替上面的两行
//builder.show();

}


点击确定取消对话框按钮,运行结果:



2.单选对话框

public void singleClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setTitle("请选择您的性别");
//一定不能setMessage,否则该内容会覆盖单选对话框选项
//builder.setMessage("这是一个单选对话框信息");

//要展示的单选选项的字符序列数组
final String[] items = new String[] {
"男",
"女",
"女博士"
};

//设置单选选项
//arg1 要展示的选项的文本
//arg2 表示默认已选中的item, -1表示没有默认被选中的选项
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {

//arg1: dialog是触发此方法执行的对话框
//arg2: which哪一个item被选中
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();
//单选结束让对话框消失
dialog.dismiss();
}
});
//显示对话框
builder.show();
}


点击单选对话框,运行结果:



注意:

如果设置了builder.setMessage(“这是一个单选对话框信息”);则会覆盖单选选项(多选也是),如图:



3.多选对话框

public void  multiClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setTitle("请选择您的爱好");

//要展示的多选选项的字符序列数组
final String[] items = new String[] {
"吃",
"喝",
"玩",
"乐"
};
//默认已选中的哪些item
final boolean[] checkedItems = new boolean[] {
true,
false,
true,
false
};

//设置多选选项,任何选项被选中都会被执行
builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, b
ad00
oolean isChecked) {
//记录用户的选择
checkedItems[which] = isChecked;
}
});

//多选完成后,点击确定来让对话框消失
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//拼接选中的选项
String text = "";
for (int i=0; i<checkedItems.length; i++) {
text += checkedItems[i]? items[i] + " " : "";
}

Toast.makeText(MainActivity.this,text + "被选中", Toast.LENGTH_SHORT).show();
}
});

//显示对话框
builder.show();
}


点击多选对话框按钮,运行结果:



4.进度条对话框

public void progressClick(View view) {
//创建进度条对话框
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.setTitle("正在加载 请稍后 ...");

//设置为水平进度条,默认是圈圈进度条
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置进度最大值
dialog.setMax(100);

//模拟加载过程
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
//设置当前进度
dialog.setProgress(i);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//加载完成后,进度条消失
dialog.dismiss();
}
}).start();
//显示对话框
dialog.show();
}


点击进度条对话框,运行结果:



补充:

可以使用 setCancelable(false)方法,来设置当点击返回键或者屏幕空白区域的时候,对话框不消失。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 对话框