Android之Dialog详解
2016-03-12 15:42
471 查看
在实际开发中,用系统的对话框会很少,因为太丑了,美工不愿意,多是使用自定义对话框。当然学会系统的,自定义就简单了,所以我们先来学习系统的,后面在写一篇自定义对话框。接下来就看看有哪些对话框吧:
一、普通对话框:
代码:
二、列表对话框:
代码:
三、单选对话框:
代码:
四、多选对话框:
代码:
五、日期对话框:
代码:
六:时间对话框:
代码:
七:进度条对话框:
代码:
进度对话框:
八:自定义对话框:
代码:
一、普通对话框:
代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("警告"); builder.setMessage("危险应用"); builder.setPositiveButton("删除", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { showToast("您点击的是删除按钮!"); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { showToast("您点击的是取消按钮!"); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); //关闭对话框 alertDialog.dismiss();
二、列表对话框:
代码:
final String[] items = {"小丽","小红","小芳"}; AlertDialog.Builder builder2 = new AlertDialog.Builder(this); builder2.setTitle("您选择的课程:"); builder2.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); builder2.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); AlertDialog items_dialog = builder2.create(); items_dialog.show();
三、单选对话框:
代码:
final String[] items = {"小丽","小红","小芳"}; AlertDialog.Builder builder3 = new AlertDialog.Builder(this); builder3.setTitle("请选择您的课程:"); builder3.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int which) { checkedItem = which; } }); builder3.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { showToast("您选择的是:" + items[checkedItem]); } }); builder3.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); AlertDialog single_dialog = builder3.create(); single_dialog.show();
四、多选对话框:
代码:
final String[] items = {"小丽","小红","小芳"}; AlertDialog.Builder builder4 = new AlertDialog.Builder(this); builder4.setTitle("请选择您的课程:"); builder4.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface arg0, int which, boolean isChecked) { // 当用户点击复选框时执行的操作 // 将位置与状态进行绑定 // showToast(which + "****************" +isChecked); checkedItems[which] = isChecked; } }); builder4.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { sb.append("第" + i + "个" + items[i] + "选项的状态是:" + checkedItems[i] + "\r\n"); } } showToast(sb.toString()); } }); builder4.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }); AlertDialog multi_dialog = builder4.create(); multi_dialog.show();
五、日期对话框:
代码:
// 通过Calendar类来获取系统的日期 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int monthOfYear = calendar.get(Calendar.MONTH); int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 日期对话框 DatePickerDialog dateDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // 监听用户时间的改变 showToast("您选择的日期是:" + year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日"); }// 当用户点击日期对话框的日期,对话框的日期根据系统的日期而变化 }, year, monthOfYear, dayOfMonth); dateDialog.show();
六:时间对话框:
代码:
Calendar calendar2 = Calendar.getInstance(); int hourOfDay = calendar2.get(Calendar.HOUR); int minute = calendar2.get(Calendar.MINUTE); // 时间对话框 TimePickerDialog timeDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { showToast("您选择的时间是" + hourOfDay + ":" + minute); } }, hourOfDay, minute, true); timeDialog.show();
七:进度条对话框:
代码:
final ProgressDialog progressDialog = new ProgressDialog(this); // 将进度条设置成水平 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 设置最大值 progressDialog.setMax(100); progressDialog.show(); // 线程 new Thread(new Runnable() { @Override public void run() { while (true) { progressDialog.setProgress(progress); progress++; SystemClock.sleep(new Random().nextInt(100)); if (progress == 100) { progressDialog.dismiss(); } } } }).start();
进度对话框:
public void dialog04(View v){ //方法1: 很多 地方 , 干了 比较耗时的事儿 时 会使用到的 ProgressDialog dialog = new ProgressDialog(this); dialog.setMessage("正在拼命加载中...."); dialog.show(); // // try { // Thread.sleep(3000); // dialog.dismiss(); // } catch (InterruptedException e) { // e.printStackTrace(); // } //方法2: 这行 代码 可以 让其 显示, 查看源代码 , 实际上是调用了 上面的这些代码 //ProgressDialog.show(this, "消息", "正在拼命加载中....").show(); //关闭隐藏对话框 dialog.dismiss(); }
八:自定义对话框:
代码:
View view = View.inflate(this, R.layout.login_layout, null); // 通过view去找到这些控件 pwd_first = (EditText) view.findViewById(R.id.pwd_first); pwd_confirm = (EditText) view.findViewById(R.id.pwd_confirm); cancle = (Button) view.findViewById(R.id.cancle); confirm = (Button) view.findViewById(R.id.confirm); cancle.setOnClickListener(this); confirm.setOnClickListener(this); customDialog = new AlertDialog.Builder(this).setTitle("登录").setView(view).create(); customDialog.show();
相关文章推荐
- android:限制EditText输入位数
- android自定义控件(二),简易的数值输入器
- android之layout_gravity 和 gravity 两者之间的区别
- Android SlidingMenu使用详解
- Android Studio 运行 遇到:Failed to read key from keystore
- android用服务service与广播broadcastreceiver创建开机启动服务
- 下载android源码
- Android View 绘制流程 与invalidate 和postInvalidate 分析--从源码角度
- android学习笔记——访问本机服务器的文件内容
- android学习笔记——Service服务初探
- android学习笔记——AsyncTask异步消息处理机制简单介绍及使用
- android学习笔记——android多线程编程初探
- android学习笔记——收发短信练习
- android学习笔记——内容提供器
- Intent和IntentFilter的笔记(develper.android.com)
- Android点击事件的四种写法
- 设置EditText中的所有字体颜色
- Android四大组件之 Activity
- Android数据库升级总结
- 使用GridViewWithHeaderAndFooter为gridView添加页头的方法