标签:
最近帮工作室改一个项目,需求是制作许多单选、多选的Dialog弹出框,我感觉有许多代码都是可重用的,就写了个可重用的Dialog类,废话不多说,先看图:
由于一些和谐的原因,实际效果肯定是比这个好看的,这里基本上都是原生属性修改……简单讲一下设计思路吧:
为什么选择自定义DIalog子类而不是AlertDialog子类(或者其他)?
Dialog子类是诸如AlertDialog子类等的父类,其可自定义范围更广(因为被设计的子类属性、方法等更少,同时又具备必要的属性和方法),其次就是,有些子类的设计就让人非常蛋疼。就拿AlertDialog来说吧,AlertDialog的构造方法是protected的,这就意味着AlertDialog类对象,及其子类对象都不能通过new的方式来获得,而是需要通过getInstance来获得,这使得我们写自定义控件的复杂性就大大上升了,非常蛋疼。所以基于减少麻烦的角度来考虑,我选择Dialog来自定义。
进行了何种程度的优化?
首先,我把大部分findViewById方法在类内写好,或者是通过传入资源文件数组(pickerDialog可以有多个选择框,这种情况下需要传入一个数组去实现)的方式去减少这一步骤耗费的时间。
其次,虽然项目的需求各有不同,但是用的控件本质上大多相似。所以我在自定义Dialog里都添加了带有style参数的构造方法,也就是说,使用这个自定义Dialog的人,可以花更少的时间去调整各式各样的UI细节,只要在style.xml中写好就行了,同时可以更多的专注于代码本身。
最后,通过反射机制监听了Dialog内的点击事件,使用者只要写好对应的点击事件就可以了。
源码在下方,大家都可以免费下载,我就不贴上来了
标签:
原文地址:http://blog.csdn.net/u012403246/article/details/44513701