通常解决方案
1.通常的解决方案是自定义View
代替,用代码去绘制相应效果。但是不能保证代码实现的效率,且常用的View较多,挨个实现自定义View较大。
2.约定文件命名,保证同样的Drawable xml
只能存在一份,这样只能避免冗余的Drawable xml
存在,并不能减少必要的Drawable文件
的生成。况且,没有程序去约束,光靠人去遵循约定是不可靠的。
XWidget解决方案
XWidget
提供丰富的"自定View"
,且基本包含常用的Drawable
属性。虽然XWidget
也是自定义View,但是其只是作为一个载体,真正绘制是和我们写的Drawable xml
原理一样,用自定义属性构造出对应的GradientDrawable
or StateListDrawable
对象,设置到View中。这样的实现方案既保证了绘制时的性能,又能够在布局中高度定制化,实现复杂的UI效果。
XButton, XConstraintLayout, XEditText, XFrameLayout, XImageView, XLinearLayout, XRelativeLayout, XTextView, XCheckBox, XView, XRadioButton
…
上面的所有的控件都支持下面表格中的属性,表格中仅以XButtonCustom举例。
| 属性名称 | 示例 |
| — | — |
| XButtonCustom_corner | 圆角度数 |
| XButtonCustom_corner_type | 圆角类型,默认 all。left_top,left_bottom,right_top,right_bottom |
| XButtonCustom_solid_color | 背景填充颜色,当没有设置渐变填充时生效 |
| XButtonCu