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、核心代码:
[/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()能得到不同的结果。】
(四)、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对象。
[/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、核心代码:
[/code]
(六)、DatePickerDialog——日期选择对话框:
1、类结构:
java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialog
↳ android.app.DatePickerDialog
2、创建 DatePickerDialog 对话框的步骤:
实例化 DatePickerDialog ,创建出 DatePickerDialog 对象;
调用 DatePickerDialog 对象的show()方法显示出 DatePickerDialog 对话框;
绑定监听器:OnDateSetListener().
3、核心代码:
(一)、分类:
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. 带图标的列表dialogbutton_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();
相关文章推荐
- AndroidStudio目录结构视图解说,androidstudio视图
- Android屏幕适配方案(个人觉得不错,比percent-support-lib好用)
- setContentView()与LayoutInflater.from()的区别-android
- 史上最全的Android ViewDragHelper解析
- 从头学android_短信发送器
- Android dex分包方案
- android的消息处理机制——Looper,Handler,Message
- Android 源码编译相关
- Android必知必会-自定义Scrollbar样式
- Android必知必会-自定义Scrollbar样式
- Android文件系统深入剖析
- 怎样使一个Android应用不被杀死?
- Android设备测试应用总结
- Android侧滑菜单之DrawerLayout用法详解
- Android Framework 基于 IPC Binder驱动使用 RPC
- Android Studio运行程序时显示apk not exists
- Vim简明教程
- AlterDialog简单使用一
- android 基础 handler message runnable thread looper
- 获取Android设备上的所有存储设备