android学习---Dialog,Android开发全套学习

  • 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移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

[外链图片转存中…(img-gSeS6OZC-1712105174188)]

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值