提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@TOC
前言
安卓在实现多种多样的功能时,一个View的显示功能时不可或缺的,而我们常常耗费大量时间在创建shape、selector上,不妨来学习一下这个开源库BackgroundLibrary,让我们的开发事半功倍。
一、BackgroundLibrary能做到什么?
BackgroundLibrary是一个快速开发开源库,它可以帮助我们轻松实现一些常见的属性设置,如圆角、描边和选择器等。使用BackgroundLibrary可以省去手动创建shape和selector的麻烦,从而节省我们的时间和精力
二、使用步骤
1.依赖方式
- gradle依赖(但是改导入方法可能找不到部分View)
gradle
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
implementation 'com.github.JavaNoober.BackgroundLibrary:library:1.7.6'
- 模块导入 2.1 先从作者提供的代码拷贝模块libraryx搬迁到自己的项目里 2.2 然后在app模块的gradle添加这句
gradle
dependencies {
implementation project(':libraryx')
}
2.xml使用
xml
<com.noober.background.view.BLButton
android:id="@+id/btn_login"
style="?android:attr/borderlessButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"
app:bl_corners_radius="20dp"
app:bl_gradient_startColor="#E689E6"
app:bl_gradient_centerColor="#4F94CD"
app:bl_gradient_endColor="#ad2233"
android:layout_marginHorizontal="100dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
xml通过属性自动生成圆角和渐变色,无需创建shape
3.代码实时设置
kotlin
val btn_register = findViewById<Button>(R.id.btn_register)
val build = DrawableCreator.Builder().setCornersRadius(dip2px(20))
.setGradientColor(Color.parseColor("#E689E6"),Color.parseColor("#4F94CD"), Color.parseColor("#ad2233")).build()
btn_register.background = build
4.部分常用属性,对应属性都有set()方法
- shape属性
| 属性 | 描述 |
|----------------------------------------------|-------------------------------------------------------|--------|--------|
| bl_shape | rectangle、oval、line、ring(暂时不支持) |
| bl_shape_alpha | drawable透明度,取值范围0-1 |
| bl_corners_radius | 圆角 |
| bl_gradient_startColor(centerColor、endColor) | 渐变色(始、中、终) |
| bl_text_gradient_orientation | 文字渐变方向(vertical、horizontal) |
| bl_stroke_width | 描边宽度 |
| bl_stroke_color | 描边颜色 |
| bl_shape_alpha | drawable透明度,取值范围0-1 |
| bl_corners_radius | 圆角 |
| bl_stroke_dashGap | 描边宽度,0时为实线 |
| bl_stroke_dashWidth | 描边虚线的间隔 |
| bl_stroke_position | 指定显示边框位置(left | bottom | right) |
| bl_position | left、right、top、bottom 设置drawable位于view的指定位置。一般用于图标带文字 |
- selector属性
属性 | 描述 |
---|---|
bl_checkable_drawable(bl_unCheckable_drawable) | |
bl_checked_drawable(bl_unChecked_drawable) | 点击后改变,适用于不带图标的RadioButton |
bl_enabled_drawable(bl_unEnabled_drawable) | -- |
bl_selected_drawable(bl_unSelected_drawable) | 点击后变化,再点击恢复原样(适用于button),搭配属性(bl_selected_textColor) |
bl_pressed_drawable(bl_unPressed_drawable) | 触击时变化,松开恢复原样(适用于button、textView) |
bl_focused_drawable(bl_unFocused_drawable) | -- |
bl_focused_hovered(bl_unFocused_hovered) | |
bl_focused_activated(bl_unFocused_activated) | |
bl_checked_button_drawable(bl_unChecked_button_drawable) | 点击后改变,适用于带图标的RadioButton、checkbox |
- 其他属性
属性 | 描述 |
---|---|
bl_ripple_enable | 是否开启点击的水波纹效果,只支持sdk21以上版本 |
bl_ripple_color | 水波纹颜色(如果开启,一定要有这个属性能生效,只支持sdk21以上版本) |
bl_checkable_stroke_color | 边框状态的属性。如果在版本1.6.1之前,sdk21以下,会没有效果,默认固定边框色取stroke_color的值,1.6.1开始,可以生效 |
bl_checked_stroke_color | |
.... |
- 属性结合
属性 | 描述 |
---|---|
bl_multi_selector1 | 默认为true,加上-为false,以", "为分隔符,最后一项为资源id的名字。可选属性(state_checkable、state_checked、state_enabled、state_selectedstate_pressed、state_focused、state_hovered、state_activated) |
因为属实有太多属性,我强烈建议去作者提供的wiki查看所有属性
5.增加xml中的属性代码提示
只需要去改路径下添加BackgroundLibrary.xml即可 C:\Users\用户名\AppData\Roaming\Google\AndroidStudio2021.3\templates 在文章顶部可以看到改文件,下载使用即可。如果没有也可以去作者wiki里下载。
总结
该库的使用其实不难,但是我个人只在实习的公司使用过,没有经常使用,所以是否会与其他属性冲突,或者有其他bug还不可知,但是其他的圆角,和描边、填充等基础属性是没问题的,公司中的项目已经用上该三方库了。 至于以后遇到什么问题或者还有补充的地方我会再回来补充。
现在有个疑惑就是,预览没有效果,就是按照作者提供的方法自定义View也没有效果,如果有同学知道的,还请在评论区指导我操作一下。 因为公司代码是可以预览的,我确信库是没问题的,就是我操作有问题。