likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 12

目录

前言

一、BackgroundLibrary能做到什么?

二、使用步骤

  • 1.依赖方式
  • 2.xml使用
  • 3.代码实时设置
  • 4.部分常用属性,对应属性都有set()方法
  • 5.增加xml中的属性代码提示

总结


前言

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

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

一、BackgroundLibrary能做到什么?

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

二、使用步骤

1.依赖方式

  1. gradle依赖(但是改导入方法可能找不到部分View)
 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添加这句
dependencies {
    implementation project(':libraryx')
}

2.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 【View学习】BackgroundLibrary第三方库学习,节省shape、selector创建时间

3.代码实时设置

        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

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

4.部分常用属性,对应属性都有set()方法

  1. shape属性
属性描述
bl_shaperectangle、oval、line、ring(暂时不支持)
bl_shape_alphadrawable透明度,取值范围0-1
bl_corners_radius圆角
bl_gradient_startColor(centerColor、endColor)渐变色(始、中、终)
bl_text_gradient_orientation文字渐变方向(vertical、horizontal)
bl_stroke_width描边宽度
bl_stroke_color描边颜色
bl_shape_alphadrawable透明度,取值范围0-1
bl_corners_radius圆角
bl_stroke_dashGap描边宽度,0时为实线
bl_stroke_dashWidth描边虚线的间隔
bl_stroke_position指定显示边框位置(leftbottomright)
bl_positionleft、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中的属性代码提示

【View学习】BackgroundLibrary第三方库学习,节省shape、selector创建时间 只需要去改路径下添加BackgroundLibrary.xml即可 C:\Users\用户名\AppData\Roaming\Google\AndroidStudio2021.3\templates 在文章顶部可以看到改文件,下载使用即可。如果没有也可以去作者wiki里下载。

总结

该库的使用其实不难,但是我个人只在实习的公司使用过,没有经常使用,所以是否会与其他属性冲突,或者有其他bug还不可知,但是其他的圆角,和描边、填充等基础属性是没问题的,公司中的项目已经用上该三方库了。 至于以后遇到什么问题或者还有补充的地方我会再回来补充。

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

现在有个疑惑就是,预览没有效果,就是按照作者提供的方法自定义View也没有效果,如果有同学知道的,还请在评论区指导我操作一下。 因为公司代码是可以预览的,我确信库是没问题的,就是我操作有问题。