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

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


技术分享

技术分享

技术分享


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


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


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


进行了何种程度的优化?

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


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


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


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


源码下载

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。