用Kotlin封裝一個Android中View的BackgroundDrawableBuilder
阿新 • • 發佈:2018-12-20
一個自定義的TextView,對background的設定進行了簡單封裝。同時包含了一個ShapeBuilder,可以用於設定給所有View新增背景
簡化View的background建立,支援在xml和程式碼中設定backgroundDrawable, 程式碼中支援鏈式呼叫,或者DSL建立
支援在xml和程式碼中設定View的background
歡迎star?
先上效果圖:
xml設定方式:
<com.unicorn.androidshapebuilder.MyTextView android:text="textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:layout_marginTop="20dp" android:layout_marginLeft="20dp" app:soildBac="@android:color/holo_green_light" app:strokeColor="@android:color/holo_red_light" app:strokeWidth="2dp" app:radiusBottomLeft="15dp" app:radiusBottomRight="2dp" app:radiusTopLeft="15dp" app:radiusTopRight="8dp" android:id="@+id/textView5"/>
程式碼設定方式有多種,可以選擇自己喜歡的方式來建立:
/** * 鏈式呼叫方式定義物件 */ val shapeBuilder1 = SuperBackgroundDrawable().radius(35f).stroke(5, Color.BLACK).solid(Color.RED) /** * 使用標準庫函式方式定義物件 */ val shapeBuilder2 = SuperBackgroundDrawable().apply { radius(10000f) stroke(5, Color.BLACK) solid(Color.YELLOW) } /** * DSL方式定義物件 */ val shapeBuilder3 = shapeDSLBuilder { radius = 35f strokeWidth = 5 strokeColor = Color.BLACK solidColor = Color.LTGRAY } /** * 工具類方式定義物件 */ val shapeBuilder4 = shapeBuilder { radius(35f) solid(Color.GREEN) } /** * DSL方式定義物件 */ val shapeBuilder5 = shapeDSLBuilder { topLeftRadius = 35f topRightRadius = 0f botLeftRadius = 35f botRightRadius = 0f strokeWidth = 5 strokeColor = Color.BLACK solidColor = Color.BLUE } textView0.background = shapeBuilder1 textView1.background = shapeBuilder2 textView2.background = shapeBuilder3 textView3.background = shapeBuilder4 textView4.background = shapeBuilder5
後期可以考慮加入layerlist支援,感興趣的同學可以直接在我的原始碼基礎上新增,可以參考原作者專案,其中包含了更多的功能。