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

Android学习——Dialog

2016-05-16 18:49 435 查看
一、Dialog对话框:
(一)、分类:

AlertDialog 警告对话框(提示对话框)
ProgressDialog 进度对话框
DatePickerDialog 日期选择对话框
TimePickerDialog 时间选择对话框
自定义对话框(登录对话框、关于对话框)
列表对话框

普通列表对话框
单选列表对话框
多选列表对话框
带图标的列表对话框

(二)、AlertDialog ——简单对话框:

1、类结构:

java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog

2、创建AlertDialog对话框的步骤:

创建AlertDialog.Builder对象,该对象能创建AlertDialog;
调用Builder对象的方法设置图标、标题、内容、按钮等;

setTitle():为对话框设置标题
setIcon ():设置图标
setMessage ():设置要显示的信息
setNegativeButton ():设置取消按钮
setPositiveButton ():设置确定按钮
setNeutralButton ():设置中立按钮

调用Builder对象的create()方法创建AlertDialog对话框;
调用AlertDialog的show()方法来显示对话框。

3、核心代码:

Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("提示");
builder.setMessage("确认退出吗?");
builder.setPositiveButton("确认", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
text_main_info.setText("您点击了:" + which);
}
});
builder.setNegativeButton("取消", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
text_main_info.setText("您点击了:" + which);
}
});
builder.setNeutralButton("中立", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
text_main_info.setText("您点击了:" + which);
}
});
builder.create().show();

[/code]

(三)、AlertDialog——列表对话框:

1、类结构:

java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog

2、创建列表AlertDialog对话框的步骤:

创建AlertDialog.Builder对象,该对象能创建AlertDialog;
调用Builder对象的方法设置图标、标题、内容、按钮等;

setTitle():为对话框设置标题
setIcon ():设置图标
setMessage ():设置要显示的信息
setNegativeButton ():设置取消按钮
setPositiveButton ():设置确定按钮
setNeutralButton ():设置中立按钮
setItems ():为对话框添加列表项
setSingleChoiceItems ():为对话框添加单选列表项
setMultiChoiceItems ():为对话框添加多选列表项
setAdapter ():为对话框添加带图标的列表项

调用Builder对象的create()方法创建AlertDialog对话框;
调用AlertDialog的show()方法来显示对话框。

3、核心代码:
【备注:使用setItems ()、setSingleChoiceItems ()、setMultiChoiceItems ()
、setAdapter()能得到不同的结果。】

//A. 普通列表
button_main_simpleListDialog.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择颜色:");
final String[] arrColor = new String[] { "红色", "绿色","蓝色" };
// 往对话框中放置普通列表
builder.setItems(arrColor, new OnClickListener() {
// 以下代码是模拟:勾选选项后,文字颜色和文本框背景颜色相应发生改变
@Override
public void onClick(DialogInterface dialog , int which) {
text_main_info.setText(arrColor[which]);
switch (which) {
case 0:
text_main_info.setBackgroundColor(Color.RED);
break;
case 1:
text_main_info.setBackgroundColor(Color.GREEN);
break;
case 2:
text_main_info.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
}
});
builder.show();
}
});

//B. 单选列表
button_main_singleListDialog
.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择颜色:");
final String[] arrColor = new String[] { "红色", "绿色","蓝色" };
// 往对话框中放置单选列表
builder.setSingleChoiceItems(arrColor, 0,
new OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
position = which;//通过这个监听器获取到点击的是第几个
}
});
builder.setPositiveButton("确认", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
text_main_info.setText(arrColor[position]);
switch (position) {
case 0:
text_main_info.setBackgroundColor(Color.RED);
break;
case 1:
text_main_info.setBackgroundColor(Color.GREEN);
break;
case 2:
text_main_info.setBackgroundColor(Color.BLUE);
break;
default:
break;
}
}
});
builder.show();
}
});

//C. 多选列表
button_main_multiListDialog
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请选择颜色:");
final String[] hobbyArr = new String[] { "看书", "学习","饮食", "爬山", "绘画" };
// 将多选项中每次勾选的结果放到一个pos数组中。
pos = new boolean[hobbyArr.length];
// 往对话框中放置多选列表
builder.setMultiChoiceItems(hobbyArr, null,
new OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface dialog,int which, boolean isChecked) {
pos[which] = isChecked;//将每一项被勾选的状态放到一个boolean型的数组中
}
});
// 多选列表项必须要使用确认按钮才能最终获得所有勾选的数据。
builder.setPositiveButton("确认", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
// 将所有的勾选项放到一个字符串中
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pos.length; i++) {
if (pos[i]) {
sb.append(hobbyArr[i]);
sb.append("、");
}
}
text_main_info.setText("您勾选了:" + sb.toString());
}
});
builder.show();
}
});

//D. 带图标的列表dialog
button_main_adapterListDialog
.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("手机设置:");

// 定义数据源。以下是模拟数据。真实工作中,有可能是从网络上获取数据,也有可能是从xml配置文件中获取数据。
// 考虑到后期维护,很少在java文件中以定义数组的形式作为适配器的数据来源。
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < settingArr.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("settingType", settingArr[i]);
map.put("imageId", imageId[i]);
list.add(map);
}
// 使用SimpleAdapter将数据源和自定义布局文件结合到一起。
SimpleAdapter adapter = new SimpleAdapter(
MainActivity.this, list, R.layout.item_dialog,
new String[] { "settingType", "imageId" },
new int[] { R.id.text_item_dialog,
R.id.imageView_item_dialog });
// 调用builder的setAdapter()方法将适配器加载到对话框中。
builder.setAdapter(adapter, new OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
text_main_info.setText("您选择设置:" + settingArr[which]);
}
});
// 显示对话框
builder.show();
}
});



(四)、AlertDialog——自定义对话框:

1、类结构:

java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog

2、创建自定义AlertDialog对话框的步骤:

创建AlertDialog.Builder对象,该对象能创建AlertDialog;
调用Builder对象的方法设置图标、标题、内容、按钮等;

setTitle():为对话框设置标题
setIcon ():设置图标
setMessage ():设置要显示的信息
setNegativeButton ():设置取消按钮
setPositiveButton ():设置确定按钮
setNeutralButton ():设置中立按钮

自定义布局文件;
使用LayoutInflater 的 inflater()方法填充自定义的布局文件,返回view对象。用该对象的findViewById()方法加载自定义布局上所有控件;
调用Builder对象的setView()方法加载view对象;
调用Builder对象的create()方法创建AlertDialog对话框;
调用AlertDialog的show()方法来显示对话框。

3、核心代码:本示例代码中写了一个显示登录窗口的登录框。
【备注:】采用LayoutInflater去填充布局,返回view对象。

View view = null;
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("管理员登录:");
LayoutInflater mInflater = LayoutInflater.from(MainActivity.this);
view = mInflater.inflate(R.layout.loginform_main, null);
final EditText edit_loginform_username = (EditText) view
.findViewById(R.id.edit_loginform_username);
final EditText edit_loginform_password = (EditText) view
.findViewById(R.id.edit_loginform_password);
builder.setView(view);
builder.setPositiveButton("登录", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String username = edit_loginform_username.getText()
.toString().trim();
String password = edit_loginform_password.getText()
.toString().trim();
if (username.length() < 1 || password.length() < 1) {
text_main_info.setText("用户名或密码不可以为空!");
} else {
StringBuilder sb = new StringBuilder();
sb.append("您的登录信息:");
sb.append("用户名:");
sb.append(username);
sb.append("密码:");
sb.append(password);
text_main_info.setText(sb.toString());
}
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//此处进行异步任务访问网络等处理。
}
});
builder.create().show();

[/code]

(五)、ProgressDialog——进度对话框:

1、类结构:

java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
↳ android.app.ProgressDialog

2、创建 ProgressDialog 对话框的步骤:

实例化ProgressDialog,创建出ProgressDialog对象;
调用该对象的方法设置图标、标题、内容、按钮等;
setTitle():为对话框设置标题setIcon ():设置图标setMessage ():设置要显示的信息
调用 ProgressDialog 对象的show()方法显示出 ProgressDialog 对话框。

3、核心代码:

ProgressDialog pDialog = new ProgressDialog(MainActivity.this);
pDialog.setTitle("提示:");
pDialog.setMessage("数据加载中。。。");
pDialog.show();


[/code]

(六)、DatePickerDialog——日期选择对话框:

1、类结构:

java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
↳ android.app.DatePickerDialog

2、创建 DatePickerDialog 对话框的步骤:

实例化 DatePickerDialog ,创建出 DatePickerDialog 对象;
调用 DatePickerDialog 对象的show()方法显示出 DatePickerDialog 对话框;
绑定监听器:OnDateSetListener().

3、核心代码:

// 获取系统当前日期
Calendar calendar = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this, new OnDateSetListener() {

@Override
public void onDateSet(DatePicker view,
int year, int monthOfYear,
int dayOfMonth) {
text_main_info.setText("您选择了:" + year
+ ":" + (monthOfYear + 1) + ":"
+ dayOfMonth);
}
}, calendar.get(Calendar.YEAR), calendar
.get(Calendar.MONTH), calendar
.get(Calendar.DAY_OF_MONTH));
datePickerDialog.setCancelable(true);
datePickerDialog.show();


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: