Android自定义控件:可复用的Dialog弹出框

最近帮工作室改一个项目,需求是制作许多单选、多选的Dialog弹出框,我感觉有许多代码都是可重用的,就写了个可重用的Dialog类,废话不多说,先看图:

由于一些和谐的原因,实际效果肯定是比这个好看的,这里基本上都是原生属性修改……简单讲一下设计思路吧:

为什么选择自定义DIalog子类而不是AlertDialog子类(或者其他)?

Dialog子类是诸如AlertDialog子类等的父类,其可自定义范围更广(因为被设计的子类属性、方法等更少,同时又具备必要的属性和方法),其次就是,有些子类的设计就让人非常蛋疼。就拿AlertDialog来说吧,AlertDialog的构造方法是protected的,这就意味着AlertDialog类对象,及其子类对象都不能通过new的方式来获得,而是需要通过getInstance来获得,这使得我们写自定义控件的复杂性就大大上升了,非常蛋疼。所以基于减少麻烦的角度来考虑,我选择Dialog来自定义。

进行了何种程度的优化?

首先,我把大部分findViewById方法在类内写好,或者是通过传入资源文件数组(pickerDialog可以有多个选择框,这种情况下需要传入一个数组去实现)的方式去减少这一步骤耗费的时间。

其次,虽然项目的需求各有不同,但是用的控件本质上大多相似。所以我在自定义Dialog里都添加了带有style参数的构造方法,也就是说,使用这个自定义Dialog的人,可以花更少的时间去调整各式各样的UI细节,只要在style.xml中写好就行了,同时可以更多的专注于代码本身。

最后,通过反射机制监听了Dialog内的点击事件,使用者只要写好对应的点击事件就可以了。

源码在下方,大家都可以免费下载,我就不贴上来了

源码下载

时间: 2024-08-07 17:02:33

Android自定义控件:可复用的Dialog弹出框的相关文章

android service Dialog 弹出框

android service Dialog 弹出框 相信大家第一次在Service中实现 AlertDialog 弹出框时,都会遇到应用闪退然后报出这个异常: Caused by: android.view.WindowManager$BadTokenException: 下面说下为什么出现这个异常,原因很简单,是由于 AlertDialog 的显示是依赖于一个确定的Activity类,所以要想在 Service 中实现弹出来,需要做如下配置: 1.安装常规写好 AlertDialog 功能块

dialog弹出框 点击周围空白处弹出层不自动消失

dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失 dialog弹出框 点击周围空白处弹出层不自动消失

使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题

问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textarea rows="15" cols="50" id="content" name="content" class="ckeditor">请输入.</textarea> --> <te

Android:动画实现精美的弹出框(仿易信)

demo apk下载:链接: http://pan.baidu.com/s/1eQgurse 密码: g91r 截图: 动画效果介绍: 1.点击ActionBar上"+"按钮,菜单从上方弹出(带反弹效果): 2.再次点击"+".点击空白区域或者点击返回键,菜单向上方收起: 3.点击弹出框上的按钮时,该按钮放大,其它按钮缩小,菜单整体渐变退出. 主体代码: 1.Activity. /** * 仿易信动画弹出框 */ public class MainActivity

Android开发实战之底部Dialog弹出效果

在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方法(取决于你的用法),在OnCreate()中进行处理.当然更多情况下,你是不需要自己去写的,会抄代码一样也是一种本事,这里我介绍一种底部弹出的对话框,希望对你的学习和工作有所帮助,下面是效果图: 下面介绍具体做法: 导入依赖库: dependencies { compile 'com.github

Android 关于Dialog弹出框

直接上效果图: 实现步骤: 1.主界面activity_main.xml很简单,一个按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_heig

dialog弹出框,自定义里面的布局;

//代码里面的设置,点击触发弹出对话框: case R.id.re_ps: // 配送费 final Dialog dialog1 = new Dialog(this); View contentView1 = LayoutInflater.from(this).inflate( R.layout.activity_send_peisong, null); dialog1.setContentView(contentView1); dialog1.setTitle("配送费用"); d

基于vue以及vuex的dialog弹出框公共组件

说明:    一款dialog公共组件, 组件功能: 1. 可拖拽.放大缩小 2. 通过传入属性决定是否使用遮罩层    3. 可根据屏幕自动适应宽高,也可自动传入宽高 4. 自动适应位置相对屏幕居中 5. close关闭按钮等回调函数 详细见github地址:https://github.com/SwnCowDevil/my-dialog 原文地址:https://www.cnblogs.com/sunweinan/p/8695341.html

Android----消息弹出框

关于Android的知识,自从工作了就没有什么时间去总结学习过的知识,我个人比较喜欢学习后总结,今天就写一下关于android中消息弹出框的几种方式的简单示例,按照自己的思路写了一段,希望对和我一样在学习Android的各位同志们有所帮助,写的不好的还是希望各位技术大神多多指点,以后我会不段改进和学习与总结.欧克. 首先android中主要有8种消息对话框的方式. 1.AlertDialog.Builder(普通消息框) 1 AlertDialog.Builder ab=new AlertDia