-
AlertDialog.Builder setIcon():设置标题的图标。
-
AlertDialog.Builder setMessage():设置标题的内容。
-
AlertDialog.Builder setCancelable():设置是否模态,一般设置为false,表示模态,要求用户必须采取行动才能继续进行剩下的操作。
Tips:AlertDialog.Builder的很多设置属性的方法,返回的均是这个AlertDialog.Builder对象,所以可以使用链式方式编写代码,这样更方便。
当一个对话框调用了show()方法后,展示到屏幕上,如果需要消除它,可以使用DialogInterface接口声明的两个方法,cancel()和dismiss()使对话框取消或者消除,这两个方法的作用是一样的,不过推荐使用dismiss()。Dialog和AlertDialog都实现了DialogInterface接口,所以只要是对话框,均可以使用这两个方法来消除对话框。
下面通过一个简单的Demo,先看看AlertDialog是如何提示信息的:
示例:
1 btnGeneral.setOnClickListener(new View.OnClickListener() { 2
3 @Override
4 public void onClick(View v) { 5 // TODO Auto-generated method stub
6 AlertDialog.Builder builder = new AlertDialog.Builder( 7 MainActivity.this);
8 builder.setTitle("提示");
9 builder.setMessage("这是一个普通的对话框!");
10 builder.setIcon(R.drawable.ic\_launcher);
11 builder.setCancelable(false);
12 builder.setPositiveButton("知道了!", new OnClickListener() {
13 @Override
14 public void onClick(DialogInterface dialog, int which) {
15 dialog.cancel();
16 }
17 });
18 builder.create().show();
19 }
20 });
展示效果:
AlertDialog的按钮
AlertDialog内置了三个按钮,可以直接使用setXxxButton()方法进行设置,对于一般的对话框,使用三个按钮基本上也够用了,下面是这三个方法的签名:
-
AlertDialog.Builder setPositiveButton(CharSquence text , DialogInterFace.OnClickListener):一个积极的按钮,一般用于“OK”或者“继续”等操作。
-
AlertDialog.Builder setNegativeButton(CharSquence text , DialogInterFace.OnClickListener):一个负面的按钮,一般用于“取消”操作。
-
AlertDialog.Builder setNeutralButton(CharSquence text , DialogInterFace.OnClickListener):一个比较中性的按钮,一般用于“忽略”、“以后提醒我”等操作。
上面介绍的DialogInterface接口,还提供了一系列的事件响应,这三个按钮均需要传递一个DialogInterFace.OnClickListener接口对象,实现其点击事件的触发,在这个接口中需要实现一个onClick(DialogInterface dialog,int which),dialog为当前触发事件的对话框对象接口,可以直接强制转换为AlertDialog进行操作;which为点击按钮的标识符,是一个整形的数据,对于这三个按钮而言,每个按钮使用不同的int类型数据进行标识:Positive(-1)、Negative(-2)、Neutral(-3)。
而除了专门为按钮点击实现的DialogInterFace.OnClickListener事件外,DialogInterface还提供了一些其他的事件,供Dialog对象响应,这些事件只是对Dialog声明周期各个状态的响应,一看就明白了,就不再详细讲解了,下面是这几个事件的说明:
-
interface DialogInterface.OnCancelListener:当对话框调用cancel()方法的时候触发。
-
interface DialogInterface.OnDismissListener:当对话框调用dismiss()方法的时候触发。
-
interface DialogInterface.OnShowListener:当对话框调用show()方法的时候触发。
-
interface DialogInterface.OnMultiChoiceListener:当对话框使用多选列表,并且选中的时候触发。
示例:
1 btnButtons.setOnClickListener(new View.OnClickListener() { 2
3 @Override
4 public void onClick(View v) { 5 // TODO Auto-generated method stub
6 AlertDialog.Builder builder = new AlertDialog.Builder( 7 MainActivity.this);
8 builder.setTitle("提示");
9 builder.setMessage("这是一个多按钮普通的对话框!");
10 builder.setIcon(R.drawable.ic\_launcher);
11 builder.setPositiveButton("确定", new OnClickListener() {
12
13 @Override
14 public void onClick(DialogInterface dialog, int which) {
15 Toast.makeText(MainActivity.this, "确定被点击",
16 Toast.LENGTH\_SHORT).show();
17 dialog.dismiss();
18 }
19 });
20 builder.setNegativeButton("否定", new OnClickListener() {
21
22 @Override
23 public void onClick(DialogInterface dialog, int which) {
24 // TODO Auto-generated method stub
25 Toast.makeText(MainActivity.this, "否定被点击",
26 Toast.LENGTH\_SHORT).show();
27 dialog.dismiss();
28 }
29 });
30 builder.setNeutralButton("忽略", new OnClickListener() {
31
32 @Override
33 public void onClick(DialogInterface dialog, int which) {
34 // TODO Auto-generated method stub
35 Toast.makeText(MainActivity.this, "忽略被点击",
36 Toast.LENGTH\_SHORT).show();
37 dialog.cancel();
38 }
39 });
40 builder.show();
41 }
42 });
展示效果:
AlertDialog的列表形式
AlertDialog除了展示一些提示信息,还可以展示一种列表的形式,需要使用到Builder.setItems(CharSequence[] items,DialogInterface.OnClickListener listener)方法进行设置,它需要传递一个CharSequenece类型的数组,以绑定列表的数据,它同样需要传递一个DialogInterface.OnClickListener接口,以响应列表项的点击,而这个接口中onClick方法的which参数,为当前点击触发项的items中的下标。
示例:
1 btnListView.setOnClickListener(new View.OnClickListener() { 2
3 @Override
4 public void onClick(View v) { 5 // TODO Auto-generated method stub
6 AlertDialog.Builder builder = new AlertDialog.Builder( 7 MainActivity.this);
8 builder.setTitle("请选择城市");
9 //items使用全局的finalCharSequenece数组声明
10 builder.setItems(items, new OnClickListener() {
11 @Override
12 public void onClick(DialogInterface dialog, int which) {
13 // TODO Auto-generated method stub
14 String select\_item = items\[which\].toString();
15 Toast.makeText(MainActivity.this,
16 "选择了---》" + select\_item, Toast.LENGTH\_SHORT)
17 .show();
18 }
19 });
20 builder.show();
21 }
22 });
效果展示:
AlertDialog的单选列表
AlertDialog还可以使用一种单选的列表样式,使用Builder.setSingleChoiceItems(CharSequenece[] items,int checkedItem,DialogInterface.OnClickListener listener),这个方法具有多项重载,主要是为了应对不同的数据源,items为列表项数组,checkedItem为初始选项,listener为点击响应事件。有时候并不一定需要选中之后就关闭对话框,可以设置两个按钮,用于确定选择。
示例:
1 btnListViewSingle.setOnClickListener(new View.OnClickListener() { 2 @Override
3 public void onClick(View v) { 4 // TODO Auto-generated method stub
5 AlertDialog.Builder builder = new AlertDialog.Builder( 6 MainActivity.this);
7 builder.setTitle("请选择一下城市");
8 builder.setSingleChoiceItems(items, 1, new OnClickListener() { 9
10 @Override
11 public void onClick(DialogInterface dialog, int which) {
12 // TODO Auto-generated method stub
13 String select\_item = items\[which\].toString();
14 Toast.makeText(MainActivity.this,
15 "选择了--->>" + select\_item, Toast.LENGTH\_SHORT)
16 .show();
17 }
18 });
19 builder.setPositiveButton("确定", new OnClickListener() {
20 @Override
21 public void onClick(DialogInterface dialog, int which) {
22 dialog.dismiss();
23 }
24 });
25 builder.show();
26 }
27 });
效果展示:
AlertDialog多选列表
AlertDialog除了单选列表,还有多选的列表。可以使用Builder.setMultiChoiceItems(CharSequence[] items,boolean[] checkedItems,DialogInterface.OnMultiChoiceClickListener listener),这个方法也同样具有多样重载,对于这个方法,items以一个数组为数据源;checkedItems是默认的选项,因为是多选列表,所以如果设置需要全部设置,如果没有默认选中,则传Null;listener为多选项点击触发事件。
示例:
1 btnListViewMulti.setOnClickListener(new View.OnClickListener() { 2
3 @Override
4 public void onClick(View v) { 5 // TODO Auto-generated method stub
6 AlertDialog.Builder builder = new AlertDialog.Builder( 7 MainActivity.this);
8 builder.setTitle("请选择城市");
9 builder.setMultiChoiceItems(items, new boolean\[\] { true, false,
10 true }, new OnMultiChoiceClickListener() {
11 @Override
12 public void onClick(DialogInterface dialog, int which,
13 boolean isChecked) {
14 // TODO Auto-generated method stub
15 String select\_item = items\[which\].toString();
16 Toast.makeText(MainActivity.this,
17 "选择了--->>" + select\_item, Toast.LENGTH\_SHORT)
18 .show();
19 }
20 });
21 builder.setPositiveButton("确定", new OnClickListener() {
22 @Override
23 public void onClick(DialogInterface dialog, int which) {
24 dialog.dismiss();
25 }
26 });
27 builder.show();
28 }
29 });
效果展示:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节
整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节
[外链图片转存中…(img-gSeS6OZC-1712105174188)]
整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算