Android系统总结之---AlertDialog笔记
来源:互联网 发布:owncloud config.php 编辑:程序博客网 时间:2024/05/16 06:47
系统的八大对话框
对话框使用注意事项:
- 修改对话框宽高的时候,要在dialog对话框show方法之后使用
- 修改dialog样式的方法
- 在style中写dialog的样式,一般如下:通过下面属性来改变dialog的背景色等
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:windowBackground">@android:color/transparent</item><!--背景透明--> <item name="android:backgroundDimEnabled">true</item><!--模糊--> <item name="android:windowFullscreen">true</item> </style>
- 在创建对话框的时候引用该样式。
final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog);
1. 一般对话框
效果图
/** * 一般对话框 */ private void showNormalDialog() { /* @setIcon 设置对话框图标 * @setTitle 设置对话框标题 * @setMessage 设置对话框消息提示 * setXXX方法返回Dialog对象,因此可以链式设置属性 */ final AlertDialog.Builder normalDialog = new AlertDialog.Builder(MainActivity.this); normalDialog.setIcon(R.mipmap.ic_launcher); normalDialog.setTitle("我是一个普通Dialog"); normalDialog.setMessage("你要点击哪一个按钮呢?"); normalDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show(); } }); normalDialog.setNegativeButton("关闭", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "关闭", Toast.LENGTH_SHORT).show(); } }); // 显示 normalDialog.show(); }
2. 带有三个按钮对话框
效果图
/** * 三个按钮对话框 * setNeutralButton */ public void showMultiBtnDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("我是一个普通Dialog").setMessage("你要点击哪一个按钮呢?"); builder.setIcon(R.mipmap.ic_launcher); builder.setNegativeButton("按钮1", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "按钮1", Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("按钮2", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "按钮2", Toast.LENGTH_SHORT).show(); } }); builder.setNeutralButton("按钮3", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "按钮3", Toast.LENGTH_SHORT).show(); } }); builder.create().show(); }
3. 列表对话框
效果图
/** * 列表对话框 */ private void showListDialog() { final String[] items = {"我是1", "我是2", "我是3", "我是4", "我是1", "我是2", "我是3", "我是4", "我是1", "我是2", "我是3", "我是4"}; AlertDialog.Builder listDialog = new AlertDialog.Builder(MainActivity.this); listDialog.setTitle("我是一个列表Dialog"); listDialog.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // which 下标从0开始 // ...To-do Toast.makeText(MainActivity.this, "你点击了" + items[which], Toast.LENGTH_SHORT).show(); } }); AlertDialog dialog = listDialog.create(); dialog.show(); //以下这些代码时用来设置dialog的高度,一定要放在show方法之后。 WindowManager.LayoutParams attributes = dialog.getWindow().getAttributes(); attributes.height = 400; dialog.getWindow().setAttributes(attributes); }
4. 单选对话框
/** * 单选对话框 */ int yourChoice; private void showSingleChoiceDialog() { final String[] items = {"我是1", "我是2", "我是3", "我是4"}; yourChoice = -1; AlertDialog.Builder singleDialog = new AlertDialog.Builder(this); singleDialog.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { yourChoice = which; } }); singleDialog.setNegativeButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (yourChoice != -1) { Toast.makeText(MainActivity.this, "你选择了" + items[yourChoice], Toast.LENGTH_SHORT).show(); } } }); singleDialog.show(); }
5. 多选对话框
/** * 多选对话框 */ ArrayList<Integer> yourChoices = new ArrayList<>(); private void showMultiChoiceDialog() { yourChoices.clear(); final String[] items = {"我是1", "我是2", "我是3", "我是4"}; AlertDialog.Builder multiChoiceDialog = new AlertDialog.Builder(this); // 设置默认选中的选项,全为false默认均未选中 final boolean initChoiceSets[] = {false, false, false, false}; multiChoiceDialog.setTitle("我是一个多选Dialog"); multiChoiceDialog.setMultiChoiceItems(items, initChoiceSets, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { yourChoices.add(which); } else { yourChoices.remove(which); } } }); multiChoiceDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int size = yourChoices.size(); String str = ""; for (int i = 0; i < size; i++) { str += items[yourChoices.get(i)] + " "; } Toast.makeText(MainActivity.this, "你选中了" + str, Toast.LENGTH_SHORT).show(); } }); multiChoiceDialog.show(); }
6. 等待对话框
/** * 等待对话框 */ private void showWaitingDialog() { /* 等待Dialog具有屏蔽其他控件的交互能力 * @setCancelable 为使屏幕不可点击,设置为不可取消(false) * 下载等事件完成后,主动调用函数关闭该Dialog */ final ProgressDialog waitingDialog = new ProgressDialog(MainActivity.this); waitingDialog.setTitle("我是一个等待Dialog"); waitingDialog.setMessage("等待中..."); waitingDialog.setIndeterminate(true); waitingDialog.setCancelable(false); waitingDialog.show(); new Handler().postDelayed(new Runnable() { @Override public void run() { waitingDialog.dismiss(); Toast.makeText(MainActivity.this, "加载数据完成", Toast.LENGTH_SHORT).show(); } }, 2000); }
7. 进度条对话框
/** * 进度条对话框 */ private void showProgressDialog() { /* @setProgress 设置初始进度 * @setProgressStyle 设置样式(水平进度条) * @setMax 设置进度最大值 */ final int MAX_PROGRESS = 100; final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setProgress(0); progressDialog.setTitle("我是一个进度条Dialog"); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMax(MAX_PROGRESS); progressDialog.show(); /* 模拟进度增加的过程 * 新开一个线程,每个100ms,进度增加1 */ new Thread(new Runnable() { @Override public void run() { int progress = 0; while (progress < MAX_PROGRESS) { try { Thread.sleep(50); progress++; progressDialog.setProgress(progress); } catch (InterruptedException e) { e.printStackTrace(); } } // 进度达到最大值后,窗口消失 progressDialog.cancel(); } }).start(); }
8. 编辑对话框
/** * 编辑对话框 * * @setView 装入一个EditView */ private void showInputDialog() { final EditText et = new EditText(this); AlertDialog.Builder inputDialog = new AlertDialog.Builder(this); inputDialog.setTitle("我是可以输入的对话框"); inputDialog.setView(et); inputDialog.setNegativeButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), et.getText().toString(), Toast.LENGTH_LONG).show(); } }); inputDialog.show(); }
9. 常用自定义对话框
/** * 常用自定义对话框1 */ private void myDialogStyle1() { final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog); View view = View.inflate(this, R.layout.dialog_my1, null); builder.setView(view); view.findViewById(R.id.dialog_twobtn_btn_left).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "左边", Toast.LENGTH_SHORT).show(); } }); view.findViewById(R.id.dialog_twobtn_btn_right).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "右边", Toast.LENGTH_SHORT).show(); } }); builder.show(); }
style样式:
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:windowBackground">@android:color/transparent</item><!--背景透明--> <item name="android:backgroundDimEnabled">true</item><!--模糊--> <item name="android:windowFullscreen">true</item> </style>
10. 底部的对话框
/** * 常用自定义对话框2 居于底部的对话框 */ private void myDialogStyle2() { final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog); View view = View.inflate(this, R.layout.dialog_my2, null); builder.setView(view); AlertDialog dialog = builder.create(); dialog.show(); Window window = dialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes();// lp.width = 1080; lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; lp.gravity = Gravity.BOTTOM; window.setAttributes(lp);// window.setBackgroundDrawableResource(android.R.color.transparent); }
11. 全屏对话框
/** * 全屏对话框 */ private void myDialogStyle3() { final AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog2); View view = View.inflate(this, R.layout.dialog_my3, null); builder.setView(view); AlertDialog dialog = builder.create(); dialog.show(); Window window = dialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(lp); }
style样式:
<style name="dialog2" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">false</item><!--半透明--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:windowBackground">@android:color/white</item><!--背景透明--> <item name="android:backgroundDimEnabled">false</item><!--模糊--> <item name="android:windowFullscreen">true</item>
源码地址:
链接:http://pan.baidu.com/s/1jI0Qfqu 密码:7y94
0 0
- Android系统总结之---AlertDialog笔记
- Android学习笔记之AlertDialog
- Android酱油笔记之AlertDialog
- 总结Android之AlertDialog.Builder用法
- 总结Android之AlertDialog.Builder用法
- Android开发入门之AlertDialog使用总结
- Android系统AlertDialog使用
- Android AlertDialog总结
- android笔记15-AlertDialog
- android 之自定义 AlertDialog
- android 组件之 alertDialog
- android之alertdialog
- Android对话框之AlertDialog
- Android AlertDialog之七十二变
- android控件之AlertDialog
- Android学习之AlertDialog
- android之alertDialog
- android之---AlertDialog详解
- JSON与对象的转换
- JS基础第5课:关闭窗口(window.close)
- Service的运用与activity的通信
- fstream 默认以字符方式读取和写文件,除非设置ios::binary
- @XStreamAlias注解的用法。
- Android系统总结之---AlertDialog笔记
- java 7 new feature
- React Native 学习笔记十九(关于开发环境)
- MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的
- web前端-HTML 媒体音频 023
- 磁盘逻辑记录的存储
- LeetCode 401. Binary Watch 题解(C++)
- 使用dom4j创建XML文件,并读取XML内容
- spark离线大数据运算程序编译