【View学习】BackgroundLibrary第三方库学习,节省shape、selector创建时间

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@TOC


前言

安卓在实现多种多样的功能时,一个View的显示功能时不可或缺的,而我们常常耗费大量时间在创建shape、selector上,不妨来学习一下这个开源库BackgroundLibrary,让我们的开发事半功倍。

当然最好的学习教程还是github作者提供的wiki和代码

一、BackgroundLibrary能做到什么?

BackgroundLibrary是一个快速开发开源库,它可以帮助我们轻松实现一些常见的属性设置,如圆角、描边和选择器等。使用BackgroundLibrary可以省去手动创建shape和selector的麻烦,从而节省我们的时间和精力

二、使用步骤

1.依赖方式

  1. gradle依赖(但是改导入方法可能找不到部分View)
gradle 复制代码
 repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
implementation 'com.github.JavaNoober.BackgroundLibrary:library:1.7.6'
  1. 模块导入 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()方法

  1. 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的指定位置。一般用于图标带文字 |

  1. 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
  1. 其他属性
属性 描述
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
....
  1. 属性结合
属性 描述
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也没有效果,如果有同学知道的,还请在评论区指导我操作一下。 因为公司代码是可以预览的,我确信库是没问题的,就是我操作有问题。

相关推荐
whltaoin34 分钟前
Java实现N皇后问题的双路径探索:递归回溯与迭代回溯算法详解
java·算法
nlog3n3 小时前
Java策略模式详解
java·bash·策略模式
兰琛3 小时前
Compose组件转换XML布局
android·xml·kotlin
水w5 小时前
【Android Studio】解决报错问题Algorithm HmacPBESHA256 not available
android·开发语言·android studio
Mryan20056 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
VX_CXsjNo16 小时前
免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
java·spring boot·spring·游戏·eclipse·android studio·android-studio
ylfhpy6 小时前
Java面试黄金宝典33
java·开发语言·数据结构·面试·职场和发展·排序算法
乘风!6 小时前
Java导出excel,表格插入pdf附件,以及实现过程中遇见的坑
java·pdf·excel
小小鸭程序员6 小时前
Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践
java·vue.js·spring·ui·elementui
隐-梵7 小时前
Android studio进阶教程之(二)--如何导入高德地图
android·ide·android studio