so, DrawableBuilder is comming…
该 Builder 类主要提供语义化的 API 进行快捷的 Shape 创建操作。
通过语义化的 API 创建 shape drawable。
代码地址
https://gist.github.com/maoruibin/4293314f0b7c277c2a635efa858a3e6e
如下,几行代码就生成了一个线条背景 drawable。
Drawable drawable = new DrawableBuilder()
.line()
.build();
tvName.setBackground(drawable);
效果:
而之前,我们大都是像如下方式来构造线条 shape。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="#34495e"/>
</shape>
用 xml drawable 设置背景
tvName = (TextView) findViewById(R.id.tvName);
tvName.setBackgroundResource(R.drawable.bk_line_drawable);
样式
可以看到,两种方式效果一致,但是使用体验却更好。在写好布局文件后,都需要去 res 目录下再创建 drawable 文件,然后再切换回 Activity 或者布局文件进行背景设置,这就免不了我们跳来跳去的切换目录,很麻烦。
相比而言,语义化 API 就显得非常友好易用,如下所示:
Drawable drawable = new DrawableBuilder()
.line()
.build();
tvName.setBackground(drawable);
样式:
跟 xml 样式一致,并且代码更少,更易于使用。
以下是圆角等其他线条的展示。
指定度数的圆角线条
new DrawableBuilder()
.line()
.corner(4)
.build();
样式:
椭圆形圆角
new DrawableBuilder()
.line()
.roundCorner()
.build();
样式:
充满颜色的圆角
new DrawableBuilder()
.line()
.roundCorner()
.fill("#d35400")
.build();
样式:
虚线线条
new DrawableBuilder()
.line()
.dash()
.build();
样式
其他 API
除了以上语义化 API,还提供了相应自定义参数的 API,如下所示:
API | 说明 |
---|---|
lineWidth(int width) | 设置线条宽度,参数为具体数值,无需转换 |
lineColor(int lineColor) | 设置线条颜色 |
corner(float cornerRadius) | 设置圆角度数 |
dashWidth(float dashWidth) | 设置虚线每个单元长度 |
dashGap(float dashGap) | 设置虚线边框每个单元之间的间距 |
fill(@ColorInt int bkColor) | 设置填充颜色 |