so, DrawableBuilder is comming...
該 Builder 類主要提供語(yǔ)義化的 API 進(jìn)行快捷的 Shape 創(chuàng)建操作灰嫉。
通過(guò)語(yǔ)義化的 API 創(chuàng)建 shape drawable颤专。
如下豹缀,幾行代碼就生成了一個(gè)線條背景 drawable。
Drawable drawable = new DrawableBuilder()
.line()
.build();
tvName.setBackground(drawable);
效果:
而之前诞仓,我們大都是像如下方式來(lái)構(gòu)造線條 shape壁晒。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="#34495e"/>
</shape>
用 xml drawable 設(shè)置背景
tvName = (TextView) findViewById(R.id.tvName);
tvName.setBackgroundResource(R.drawable.bk_line_drawable);
樣式
可以看到诵叁,兩種方式效果一致,但是使用體驗(yàn)卻更好簿寂。在寫好布局文件后漾抬,都需要去 res 目錄下再創(chuàng)建 drawable 文件,然后再切換回 Activity 或者布局文件進(jìn)行背景設(shè)置常遂,這就免不了我們跳來(lái)跳去的切換目錄纳令,很麻煩。
相比而言,語(yǔ)義化 API 就顯得非常友好易用平绩,如下所示:
Drawable drawable = new DrawableBuilder()
.line()
.build();
tvName.setBackground(drawable);
樣式:
跟 xml 樣式一致圈匆,并且代碼更少,更易于使用捏雌。
以下是圓角等其他線條的展示跃赚。
指定度數(shù)的圓角線條
new DrawableBuilder()
.line()
.corner(4)
.build();
樣式:
橢圓形圓角
new DrawableBuilder()
.line()
.roundCorner()
.build();
樣式:
充滿顏色的圓角
new DrawableBuilder()
.line()
.roundCorner()
.fill("#d35400")
.build();
樣式:
虛線線條
new DrawableBuilder()
.line()
.dash()
.build();
樣式
其他 API
除了以上語(yǔ)義化 API,還提供了相應(yīng)自定義參數(shù)的 API性湿,如下所示:
API | 說(shuō)明 |
---|---|
lineWidth(int width) | 設(shè)置線條寬度来累,參數(shù)為具體數(shù)值,無(wú)需轉(zhuǎn)換 |
lineColor(int lineColor) | 設(shè)置線條顏色 |
corner(float cornerRadius) | 設(shè)置圓角度數(shù) |
dashWidth(float dashWidth) | 設(shè)置虛線每個(gè)單元長(zhǎng)度 |
dashGap(float dashGap) | 設(shè)置虛線邊框每個(gè)單元之間的間距 |
fill(@ColorInt int bkColor) | 設(shè)置填充顏色 |