android如何自定义dialog,Android—自定义Dialog
在 Android 日常的开发中,Dialog 使用是比较广泛的。无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框。
而我们去看一下原生的对话框,虽然随着 Android 版本的更新,变得比较好看了,但是,一个 App 往往都会有自己的风格,都会定义一个或几个和 App 整体风格保持一致的 Dialog,这样显得好看一点。也比较令人赏心悦目,下面就来看看怎么自定义一个 Dialog。
Android 原生的 Dailog 的创建是以建造者的模式进行的,需要什么就往上面加,这样可以很灵活的定义自己所需要的,但在这里,我们采用一个自定义的 XML 布局文件,给Dialog设置相应的 View 来起到最大程度的自定义 Dialog 。
下面就来看一下最简单的提示性Dialog怎么写吧!
就先来看看布局文件
布局文件写的比较简单,整体是一个相对布局,上面一个标题,标题右侧一个关闭的图标,然后中间是提示内容的TextView,下面是确定和取消两个按钮。
这里只是最简单的一个对话框,自己可以根据项目的需要自定义出自己想要的,这里写布局文件就好像写Activity的布局文件一样。这里我比较懒惰,整体的背景是一个圆角的 .9 的图片,还有确认和取消都是以 .9 的图片作为背景。实际项目中,有 .9 的可以使用,没有可以自己自定义一个 Drawable 也可以实现圆角,当然,自己自定义的话写的时候麻烦一点,后期想怎么改就怎么改,自由度会比 .9 会高很多很多。
布局文件看完来看看代码怎么写:
代码不多,总共不超过 100 行,也有零星的注释可看,下面就整体的解释一下代码。
首先这是一个Dialog,那么首先要继承自Dialog。
19-29行是前面 xml 布局文件上的一些控件,以及他们需要设的值,还有一个 Dialog 的确定取消的监听的回调接口,这个监听的回调接口具体可以看100-111行,里面注释也写的比较明白了。
31行和36行是构造函数。31行的构造函数没什么。直接调用super去执行父类的构造方法。36行的构造方法就完全自定义的了,里面分别接收了标题、提示内容、确定和取消按钮的字样,最后是一个确定和取消的监听的回调。
47行开始是onCreate()函数,开始是 setTheme() 设置整个 Dialog 的主题,然后是 setContentVIew() 设置其对应的 View。然后是初始化 Dialog 上的各个控件,具体看79行的这个初始化的方法,方法体里面的东西写的很简单了,不再解释。接下来是 Dialog 上几个可点击的按钮对应的点击事件。关闭按钮就直接关闭了,确定和取消就执行回调,这里需要补充的是:执行listener.onSure() 和 listener.onCancel() 的时候先要判断一下 listener 是不是空的,如果不是空才去调用它,这点在写代码的时候忘了加上去。整体就是这样,没什么了。
前面代码涉及到一个Theme,下面看一下Theme的内容:
这里可以根据自己的需要去设置不同的属性,其中标题这些是肯定不需要的了,因为我们整个都自定义,标题自然就不要了。
具体还有什么属性可以加的,自己去探索一下吧!
最后来看看怎么使用,写完了就得用,看不到效果谁知道会是怎样,对吧。
就这样用,其实第一行(已被注释掉)那种用法对应的就是第一个构造函数的用法。也可以先看看效果如何。
然后第二种用法就是对应我们的第二个构造函数的,这里有一个回调,当我们点击确定的时候弹一个toast,取消也相应的弹一个,其他没什么了。
这里为什么要采取回调的方式呢?
用回调就是为了可以高度的自定义,如果你写死在 Dialoag 类中的话,就显得单一性了,要对不同的 Dialog 做不同的操作的时候就GG了。所以,这就是为什么要采取回调的方式来做。
整个Dialog写完了,来看看效果图:
整个 Dialog 到此结束!
2016-10-21
Android自定义 Dialog 对话框
Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...
Android自定义Dialog(美化界面)
前言:在做项目的时候,发现dialog界面太丑陋,从csdn上下载了一份自定义dialog的源码,在他的基础上对界面进行美化...有需要的朋友可以直接拿走 效果图如下: 主要代码: /** * 自定义 ...
Android自定义Dialog及其布局
实际项目开发中默认的Dialog样式无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件. 上效果图: 自定义Dialog,LogoutDialog: 要将自定义布局传入构造函数中, ...
android 自定义Dialog背景透明及显示位置设置
先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog ...
Android自定义Dialog
Android开发过程中,常常会遇到一些需求场景——在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作, 如退出登录时的弹窗,让用户选择“退出”还是“取消”等操作. Android系统提 ...
android 自定义Dialog去除黑色边框
在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式:
题意:给定一个正整数序列,操作是1.区间赋值,2.区间大于x的数与x取gcd,最后输出操作后的序列 用平衡树维护相同数组成的连续段,每次操作至多增加两个连续段,操作2记录一下区间最小值然后暴力修改,每 ...
实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
一.实验要求 1.没有Linux基础的同学建议先学习 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报 ...
android如何自定义dialog,Android—自定义Dialog相关推荐
- android 之Dialog的多种Dialog对话框(以及反射在自定义对话框的运用)
实际效果: 实例代码: 一个"启动初始Activity.xml" 一个弹出的Activity 业务逻辑代码: package com.hsj.example.alertdialog ...
- android 自定义透明 等待 dialog,Android自定义Dialog内部透明、外部遮罩效果
Android自定义Dialog内部透明.外部遮罩效果 发布时间:2020-09-09 03:01:41 来源:脚本之家 阅读:117 作者:zst1303939801 本文实例为大家分享了Andro ...
- android 获取对话框对象,Android 基本Dialog和自定义Dialog
Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...
- android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据
**主要实现功能:** 1.从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中 2.将AlertDialog的EditText中的值设置 ...
- android常用窗口动画,android 自定义dialog,窗口动画,
自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码: package com.sunxu.org.IndividualityDialog; import ...
- Android 对话框(Dialog) 及 自定义Dialog
Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...
- android倒计时dialog,自定义带倒计时的Dialog
1.[文件] CustomDiaglog.rar ~ 56KB 下载(206) 2.[图片] 豌豆荚截图20121103224745.png 3.[代码]Dialog核心代码 package ...
- Android弹出自定义Dialog,android自定义Dialog实现底部弹窗
android自定义Dialog实现底部弹窗 拿到这个需求,很多人都是直接想用popWindow 实现,但是这样的效果我们完全可以根据系统的Dialog 自定义一个. AlertDialog.Buil ...
- android 自定义带输入框的dialog,Android 基本Dialog和自定义Dialog
Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...
最新文章
- 3dsmax biped 骨骼姿势 对称操作
- 出现adb连接不上的解决办法(转载)
- Xilinx SDK使用教程
- cnn识别mnist、Fashion-MNIST(pytorch)
- Six Basic Functional Areas of Spring
- 天气预报API接口 : 城市对应码(中国天气网)
- [浪风JQuery开发]jquery最有意思的IFrame类似应用--值得深入研究
- 死锁的处理策略——检测和解除
- 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
- 【java】编写一个圆柱体类Cylinder,它继承于Circle类
- 亿网文交孟建州艺术品该怎么鉴别,代码分析
- 驱动精灵安装的流氓软件如何卸载、及删除驱动精灵
- OA常见问题和解决方案
- php dingo和jwt,Laravel5.5+dingo+JWT 开发后台 API
- 识别车牌是什么神经网络,车牌识别深度神经网络
- 爱因斯坦:三篇著名演讲
- web开发常用js及html代码(待整理)
- 由计算机谈最强大脑周玮
- 储存过程的优点?缺点?
- python项目中的.idea文件夹是干什么的
热门文章
- strip().split()怎么用
- 9个value_counts()的小技巧,提高Pandas 改进数据分析效率
- nginx--基于openssl自颁发SSL证书实现HTTPS协议安全访问网站
- 5 分钟图解 磁盘的结构(盘片、磁道、扇区、柱面)
- Android Wifi认证(Portal)代码解析DNS并使用Socket发送Http请求完成认证
- “电子哨兵”助力防疫 火眼金睛秒识别
- python找不到对象怎么办_你为什么总找不到对象
- Python3 URL格式化url解析url提取参数
- 牛客练习赛63---牛牛的树行棋
- 在physx中创建射线ray,并获取碰撞点