吐槽
哇哇哇,刚写一半win10给我蓝屏了,心塞塞,以后写一点保存一点。回到正题,看到产品给我的设计图,有辣么多的自定义的dialog,发现之前自己只会系统自带的dialog,但是这样根本满足不了产品的需求,所以自己上周好好总结下,然后把产品给的需求完成。//哇哇哇,项目写不完了
什么叫dialog
简单来说就是一句话:
弹出一个窗口,提示用户自己去选择,去提示,去分类的一些内容。
安卓自带的dialog有三种:
- AlertDialog—-普通的提示对话框
- ProgressDialog–进度条对话
- DatePickerDialog/TimePickerDialog–日期对话框/时间对话框
所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自Dialog,其他的几个类均继承自AlterDialog。
系统自带的dialog基本上用AlertDialog类
AlertDialog继承自Dialog类,对于Android内置的AlterDialog,它可以包含一个标题、一个内容消息或者一个选择列表、最多三个按钮。而创建AlterDialog推荐使用它的一个内部类AlterDialog.Builder创 建。使用Builder对象,可以设置AlterDialog的各种属性,最后通过Builder.create()就可以得到AlterDialog对 象,如果只是还需要显示这个AlterDialog,一般可以直接使用Builder.show()方法,它会返回一个AlterDialog对象,并且 显示它。
//说这么多,还不如直接看下如何用
下面我会讲三个层次的dialog的使用:
- 简单的系统dialog调用//就是简单的系统dialog的调用
- 半自定义的dialog//就是改变一些基础属性
- 完全自定义dialog//自定义dialog类,自己写界面,点击事件
##简单的系统dialog
简单的dialog也分好多种,但是我只说AlertDialog类的
###普通对话框
这个就是最普通的那种,让你选择正确或者错误,也可以选择中立,这个是最常见的那种
用法很简单 - 第一步:new个AlertDialog.Builder
- 第二步:设置dialog的图标,文字,提示信息
- 第三步:设置不同选择的点击事件
- 第四步:显示dialog
/**
* 普通dialog
*/
private void showAlterDialog(){
final AlertDialog.Builder alterDiaglog = new AlertDialog.Builder(MainActivity.this);
alterDiaglog.setIcon(R.drawable.icon);//图标
alterDiaglog.setTitle("简单的dialog");//文字
alterDiaglog.setMessage("生存还是死亡");//提示消息
//积极的选择
alterDiaglog.setPositiveButton("生存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了生存",Toast.LENGTH_SHORT).show();
}
});
//消极的选择
alterDiaglog.setNegativeButton("死亡", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了死亡",Toast.LENGTH_SHORT).show();
}
});
//中立的选择
alterDiaglog.setNeutralButton("不生不死", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了不生不死",Toast.LENGTH_SHORT).show();
}
});
//显示
alterDiaglog.show();
}
列表对话框
直接看图吧
这个和普通的dialog差不多,只不过是从中数组选择一个确定点击事件
/**
* 列表Dialog
*/
private void showListDialog(){
final String[] items = {
"我是1","我是2","我是3"};
AlertDialog.Builder listDialog = new AlertDialog.Builder(MainActivity.this);
listDialog.setIcon(R.drawable.icon);//图标
listDialog.setTitle("我就是个列表Dialog");
listDialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了"+items[which],Toast.LENGTH_SHORT).show();
}
});
listDialog.show();
}
单选对话框
它和列表对话框区别是前面有选择的圆点
也是一样的
/**
* 单选Dialog
*/
int choice;
private