前言
SuperShadow是一款在安卓端控件增加阴影的一款开源项目,自己在找了了代码之后觉得架构不错 ,就分析番
,好做个标记,也为以后自己设计架构做个参考和标记。
技术亮点
一、@IntDef的使用,可以用来实现限制传值的范围,如果不是这个范围则报错
二、定义了IShadowRenderer渲染器接口,渲染分为四个部步骤, //给控件增加渲染效果 void
makeShadow(View view); //移除渲染效果 void removeShadow(); //隐藏渲染效果 void
hideShadow(); //显示渲染效果 void showShadow();
三、SuperShadow提供了对外的使用,并没有继承view方法
架构分析
compone接口
定义了一个componet组件接口,用来定义一些用来可组合的组件
view里的自定义控件是用来实现WrapRenderer的,实现了包装式阴影
ShadowAttr定义了渲染的属性,
draw和wrap接口
这两个接口实现了两个渲染器,一个是draw渲染器,一个是wrap渲染器,draw添加阴影背景,
同时可以设置圆角,而wrap是包装的形式添加阴影
SuperShadow类
这是一个对外提供接口的类,这个类是对定义的组件和渲染器的使用,来完成阴影效果的实现
使用
superWrapShadowDirectionExample1 = new SuperShadow.Builder()
.setContext(this)
//设置方向
.setDirection(ShadowDirection.LEFT_TOP)
.setShadowSize(dip2Px(8))
.setCorner(dip2Px(4))
.setBaseShadowColor(Color.parseColor("#99cc00"))
//设置渲染器
.setImpl(SuperShadow.WRAP)
.action(wrapShadowLeftTopExample);