一、AlertDialog简介:AlertDialog的构造方法被声明为protected,所以不能直接使用new关键字来创建AlertDialog类的对象实例。要想创建AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。因此必须创建AlertDialog.Builder类的对象实例,然后再调用show()来显示对话框。
例如: AlertDialog.Builder db= new Builder(this);
db..create().show();
二、属性介绍
1 AlertDialog.Builder属性
* setTitle: 为对话框设置标题 ;
* setIcon : 为对话框设置图标;
* setMessage: 为对话框设置内容;
* setView : 给对话框设置自定义样式 ;
* setItems: 设置对话框要显示的一个list,一般用于显示几个命令时;
* setMultiChoiceItems:用来设置对话框显示一系列的复选框;
* setNeutralButton : 响应中立行为的点击;
* setPositiveButton : 响应Yes/Ok的点击 ;
* setNegativeButton :响应No/Cancel的点击 ;
* create : 创建对话框 ;
* show : 显示对话框;
2 ProgressDialog属性
*setProgressStyle: 设置进度条风格,风格为圆形,旋转的;
*setTitlt: 设置ProgressDialog 标题;
*setMessage: 设置ProgressDialog提示信息;
*setIcon: 设置ProgressDialog标题图标;
*setIndeterminate: 设置ProgressDialog 的进度条是否不明确;
*setCancelable: 设置ProgressDialog 是否可以按返回键取消;
*setButton: 设置ProgressDialog 的一个Button(需要监听Button事件);
*show: 显示ProgressDialog。
可以创建类型的对话框,如:带按钮、简单列表、单选列表、多选列表、水平进度或圆形对话框(默认是:圆形)、悬浮对话框和触摸任何位置都可以关闭的对话框等,也可以自定义对话框(下面有自定义登陆示例)。
三、 示例
// |
023 | /* 【简单提示对话框】 */ |
024 | Button btn1 = (Button) findViewById(R.id.dialg_demo_btn01); |
025 | btn1.setOnClickListener(new OnClickListener() |
026 | { |
027 | public void onClick(View v) |
028 | { |
029 | // TODO Auto-generated method stub |
030 | new AlertDialog.Builder(dialog_demo.this).setTitle("简单提示对话框").setMessage("这是提示信息") |
031 | .show(); |
032 | return; |
033 | } |
034 | }); |
035 | // // |
036 | /* 【带确定取消按钮的提示对话框】 */ |
037 | Button btn2 = (Button) findViewById(R.id.dialg_demo_btn02); |
038 | btn2.setOnClickListener(new OnClickListener() |
039 | { |
040 | public void onClick(View v) |
041 | { |
042 | // TODO Auto-generated method stub |
043 | AlertDialog.Builder dialog02 = new AlertDialog.Builder(dialog_demo.this); |
044 | dialog02.setTitle("带确定取消按钮的提示对话框"); |
045 | dialog02.setIcon(R.drawable.qq); |
046 | dialog02.setMessage("这是提示内容"); |
047 | dialog02.setPositiveButton("确定", new DialogInterface.OnClickListener() |
048 | { |
049 | public void onClick(DialogInterface dialoginterface, int which) |
050 | { |
051 | Toast.makeText(dialog_demo.this, "你选择了确定", Toast.LENGTH_LONG).show(); |
052 | } |
053 | }); |
054 | dialog02.setNegativeButton("取消", new DialogInterface.OnClickListener() |
055 | { |
056 | public void onClick(DialogInterface dialoginterface, int which) |
057 | { |
058 | Toast.makeText(dialog_demo.this, "你选择了取消", Toast.LENGTH_LONG).show(); |
059 | } |
060 | }); |
061 | dialog02.create().show(); |
062 | return; |
063 | } |
064 | }); |
065 | // // |
066 | /* 【带多个按钮的提示对话框】 */ |
067 | Button btn3 = (Button) findViewById(R.id.dialg_demo_btn03); |
068 | btn3.setOnClickListener(new OnClickListener() |
069 | { |
070 | public void onClick(View v) |
071 | { |
072 | // TODO Auto-generated method stub |
073 | AlertDialog.Builder dialog03 = new AlertDialog.Builder(dialog_demo.this); |
074 | dialog03.setIcon(R.drawable.img1); |
075 | dialog03.setTitle("带多个按钮的提示对话框"); |
076 | dialog03.setMessage("你最喜欢的球类运动是什么呢?"); |
077 | dialog03.setPositiveButton("篮球", new DialogInterface.OnClickListener() |
078 | { |
079 | public void onClick(DialogInterface dialoginterface, int which) |
080 | { |
081 | showDialog("篮球很不错"); |
082 | } |
083 | }); |
084 | dialog03.setNeutralButton("乒乓球", new DialogInterface.OnClickListener() |
085 | { |
086 | public void onClick(DialogInterface dialoginterface, int which) |
087 | { |
088 | showDialog("乒乓球很不错"); |
089 | } |
090 | }); |
091 | dialog03.setNegativeButton("足球", new DialogInterface.OnClickListener() |
092 | { |
093 | public void onClick(DialogInterface dialoginterface, int which) |
094 | { |
095 | showDialog("足球很不错"); |
096 | } |
097 | }); |
098 | dialog03.create().show(); |
099 | return; |
100 | } |
101 | }); |
102 | // // |
103 | /*【单选按钮对话框】*/ |
104 | Button btn4 = (Button) findViewById(R.id.dialg_demo_btn04); |
105 | btn4.setOnClickListener(new OnClickListener() |
106 | { |
107 | public void onClick(View v) |
108 | { |
109 | // TODO Auto-generated method stub |
110 | mSingleChoiceID = -1; |
111 | AlertDialog.Builder dialog04 = new AlertDialog.Builder(dialog_demo.this); |
112 | dialog04.setTitle("单选按妞"); |
113 | dialog04.setSingleChoiceItems(m_Items, 0, new DialogInterface.OnClickListener() |
114 | { |
115 | public void onClick(DialogInterface dialog, int whichButton) |
116 | { |
117 | mSingleChoiceID = whichButton; |
118 | showDialog("你选择的id为" + whichButton + " , " + m_Items[whichButton]); |
119 | } |
120 | }); |
121 | dialog04.setPositiveButton("确定", new DialogInterface.OnClickListener() |
122 | { |
123 | public void onClick(DialogInterface dialog, int whichButton) |
124 | { |
125 | if (mSingleChoiceID > 0) |
126 | { |
127 | showDialog("你选择的是" + mSingleChoiceID); |
128 | } |
129 | } |
130 | }); |
131 | dialog04.setNegativeButton("取消", new DialogInterface.OnClickListener() |
132 | { |
133 | public void onClick(DialogInterface dialog, int whichButton) |
134 | { |
135 | |
136 | } |
137 | }); |
138 | dialog04.create().show(); |
139 | return; |
140 | } |
141 | }); |
142 | // // |
143 | /*【多选按钮对话框】*/ |
144 | Button btn5 = (Button) findViewById(R.id.dialg_demo_btn05); |
145 | btn5.setOnClickListener(new OnClickListener() |
146 | { |
147 | public void onClick(View v) |
148 | { |
149 | // TODO Auto-generated method stub |
150 | MultiChoiceID.clear(); |
151 | AlertDialog.Builder dialog05 = new AlertDialog.Builder(dialog_demo.this); |
152 | dialog05.setTitle("多选按钮"); |
153 | dialog05.setMultiChoiceItems(m_Items, new boolean[] |
154 | { false, false, false}, |
155 | new DialogInterface.OnMultiChoiceClickListener() |
156 | { |
157 | public void onClick(DialogInterface dialog, int whichButton, |
158 | boolean isChecked) |
159 | { |
160 | if (isChecked) |
161 | { |
162 | MultiChoiceID.add(whichButton); |
163 | showDialog("你选择的id为" + whichButton + " , " |
164 | + m_Items[whichButton]); |
165 | } else |
166 | { |
167 | MultiChoiceID.remove(whichButton); |
168 | } |
169 | |
170 | } |
171 | }); |
172 | dialog05.create().show(); |
173 | return; |
174 | } |
175 | }); |
176 | // // |
177 | /*【列表框对话框】*/ |
178 | Button btn6 = (Button) findViewById(R.id.dialg_demo_btn06); |
179 | btn6.setOnClickListener(new OnClickListener() |
180 | { |
181 | public void onClick(View v) |
182 | { |
183 | // TODO Auto-generated method stub |
184 | AlertDialog.Builder dialog06 = new AlertDialog.Builder(dialog_demo.this); |
185 | dialog06.setTitle("列表框"); |
186 | dialog06.setItems(m_Items, new DialogInterface.OnClickListener() |
187 | { |
188 | public void onClick(DialogInterface dialog, int which) |
189 | { |
190 | // 点击后弹出窗口选择了第几项 |
191 | showDialog("你选择的id为" + which + " , " + m_Items[which]); |
192 | } |
193 | }); |
194 | dialog06.create().show(); |
195 | return; |
196 | } |
197 | }); |
// |
199 | /*【自定义登录对话框】*/ |
200 | Button btn7 = (Button) findViewById(R.id.dialg_demo_btn07); |
201 | btn7.setOnClickListener(new OnClickListener() |
202 | { |
203 | public void onClick(View v) |
204 | { |
205 | // TODO Auto-generated method stub |
206 | LayoutInflater factory = LayoutInflater.from(dialog_demo.this); |
207 | final View view = factory.inflate(R.layout.dialog_demo_login, null);// 获得自定义对话框 |
208 | |
209 | AlertDialog.Builder dialog07 = new AlertDialog.Builder(dialog_demo.this); |
210 | dialog07.setIcon(R.drawable.qq); |
211 | dialog07.setTitle("自定义登录对话框"); |
212 | dialog07.setView(view);// 引用自己定义的布局 |
213 | dialog07.setPositiveButton("确定", new DialogInterface.OnClickListener() |
214 | { |
215 | public void onClick(DialogInterface dialog, int whichButton) |
216 | { |
217 | |
218 | EditText userName = (EditText) view |
219 | .findViewById(R.id.dialog_demo_loginETUserName); |
220 | EditText password = (EditText) view |
221 | .findViewById(R.id.dialog_demo_loginETPassWord); |
222 | showDialog("姓名 :" + userName.getText().toString() + "密码:" |
223 | + password.getText().toString()); |
224 | } |
225 | }); |
226 | dialog07.setNegativeButton("取消", new DialogInterface.OnClickListener() |
227 | { |
228 | public void onClick(DialogInterface dialog, int whichButton) |
229 | { |
230 | //Toast.makeText(dialog_demo.this, "你选择了取消", Toast.LENGTH_LONG).show(); |
231 | showDialog("你选择了取消"); |
232 | } |
233 | }); |
234 | dialog07.create().show(); |
235 | return; |
236 | } |
237 | }); |
238 | // // |
239 | Button btn8 = (Button) findViewById(R.id.dialg_demo_btn08); |
240 | btn8.setOnClickListener(new OnClickListener() |
241 | { |
242 | public void onClick(View v) |
243 | { |
244 | // TODO Auto-generated method stub |
245 | mProgressDialog = new ProgressDialog(dialog_demo.this);//创建ProgressDialog对象 |
246 | mProgressDialog.setIcon(R.drawable.qq);// 设置ProgressDialog标题 图标 |
247 | mProgressDialog.setTitle("进度条窗口");// 设置ProgressDialog标题 |
248 | mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条风格,风格为长形 |
249 | mProgressDialog.setMax(MAX_PROGRESS);// 设置ProgressDialo进度条进度 |
250 | mProgressDialog.setButton("确定", new DialogInterface.OnClickListener() |
251 | { |
252 | public void onClick(DialogInterface dialog, int whichButton) |
253 | { |
254 | // 这里添加点击后的逻辑 |
255 | } |
256 | }); |
257 | mProgressDialog.setButton2("取消", new DialogInterface.OnClickListener() |
258 | { |
259 | public void onClick(DialogInterface dialog, int whichButton) |
260 | { |
261 | // 这里添加点击后的逻辑 |
262 | } |
263 | }); |
264 | mProgressDialog.show(); |
265 | new Thread() |
266 | { |
267 | @Override |
268 | public void run() |
269 | { |
270 | int Progress = 0; |
271 | while (Progress < MAX_PROGRESS) |
272 | { |
273 | try |
274 | { |
275 | mProgressDialog.setProgress(Progress++); |
276 | //mProgressDialog.incrementProgressBy(1); |
277 | Thread.sleep(100); |
278 | } catch (Exception e) |
279 | { |
280 | // TODO Auto-generated catch block |
281 | mProgressDialog.cancel(); |
282 | //e.printStackTrace(); |
283 | } |
284 | } |
285 | }; |
286 | }.start(); |
287 | return; |
288 | } |
289 | }); |
290 | // // |
291 | /*【圆形(转圈)进度条】*/ |
292 | Button btn9 = (Button) findViewById(R.id.dialg_demo_btn09); |
293 | btn9.setOnClickListener(new OnClickListener() |
294 | { |
295 | public void onClick(View v) |
296 | { |
297 | // TODO Auto-generated method stub |
298 | mProgressDialog = new ProgressDialog(dialog_demo.this);//创建ProgressDialog对象 |
299 | mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //设置进度条风格,风格为圆形,旋转的 |
300 | mProgressDialog.setTitle("读取ing...");// 设置ProgressDialog标题 |
301 | mProgressDialog.setMessage("正在读取中请稍候...");// 设置ProgressDialog提示信息 |
302 | mProgressDialog.setIndeterminate(true);//设置ProgressDialog 的进度条不明确 |
303 | mProgressDialog.setCancelable(true);// 设置ProgressDialog 可以按退回键取消 |
304 | mProgressDialog.setButton("确定", new DialogInterface.OnClickListener() |
305 | { |
306 | public void onClick(DialogInterface dialog, int whichButton) |
307 | { |
308 | // 这里添加点击后的逻辑 |
309 | } |
310 | }); |
311 | mProgressDialog.show();// 让ProgressDialog显示 |
312 | return; |
313 | } |
314 | }); |
315 | // // |
316 | /*【带补充对话框】*/ |
317 | Button btn10 = (Button) findViewById(R.id.dialg_demo_btn10); |
318 | btn10.setOnClickListener(new OnClickListener() |
319 | { |
320 | public void onClick(View v) |
321 | { |
322 | // TODO Auto-generated method stub |
323 | return; |
324 | } |
325 | }); |