背景
随着公司项目越来越多,会使用到公共的UI组件,那么将组件抽离出来独立成一个lib库是有必要的。但是,不同的项目存在一定的差异化是不可避免的,这时候,如何在提高公共组件可复用性又可实现UI差异?那么UI定制化就是本文的重点。
组件模块化
组件模块化根据粒度大小,将其分为:控件模块化和功能模块化。
控件模块化,就是将某个控件抽离出来,它仅仅用来显示效果,不包括业务逻辑;
相对的,功能模块化,就是包含了业务逻辑,一个较完整的功能模块。
控件模块化
控件模块化中的UI定制,和Android中自定义View一样,在res/attr.xml文件下声明一个declare-styleable
<declare-styleable name="YLCalendar">
<attr name="todayBorderColor" format="color"/>
<attr name="todayShape">
<enum name="circle" value="0"/>
<enum name="rectangle" value="1"/>
</attr>
<attr name="todayFill" format="boolean"/>
<attr name="todayTextColor" format="color"/>
<attr name="todayTextSize" format="dimension"/>
<!--公历字体颜色-->
<attr name="solarTextColor" format="color" />
<!--农历字体颜色-->
<attr name="lunarTextColor" format="color" />