前言
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);