Android-告别手写drawable,用代码快速构建按钮效果

做为一个Android开发人员,一直以来最烦的就是写按钮效果。一个简单的按钮效果要写好几个drawable文件,一直都想写一个用代码快速实现按钮效果的东西。于是乎,便动手写了个小工具。正所谓,懒是第一生产力嘛。
废话不多说,我们马上开始。
添加依赖

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
dependencies {
            implementation 'com.github.MundyL:QuickDrawable:0.1.3'
    }

然后下面我们来看看如果用代码实现平时所需要的各种效果。

new QuickDrawable()
                .color(Color.RED)//设置背景色
               // .color(Color.parseColor("#f34563")) 也可以这样设置颜色
                //.color(ContextCompat.getColor(this,R.color.colorPrimary)) 也可以这样设置颜色
                .corner(10)//设置圆角,所有此类值的单位都是dp
                .into(btn1);

上面的方法可以实现控件的圆角。背景颜色,边框。
属性说明:
color:设置背景颜色,可以用Color.RED系统颜色,也可以使用Color.parseColor自定义色码,也可以使用ContextCompat.getColor(this,R.color.colorPrimary) 引用资源文件设置好的颜色
corner:设置控件的圆角,提供了一个参数的方法和四个参数的方法,设置一个参数则四个角相等,也可以分别设置四个角的圆角。
上面的代码效果如下


Android-告别手写drawable,用代码快速构建按钮效果_第1张图片
Screenshot_2019-06-09-12-51-12-804_com.lm.quickdrawabledemo.png

下面我们再来看看如何设置边框和边框颜色

new QuickDrawable()
                 .corner(10,10,0,0)//单独设置4个圆角
                //.border() 不传参数则默认1dp
                .border(10)
                .borderColor(Color.parseColor("#f34563"))//设置边框颜色.
                .into(btn2);

border:当不传入参数时则默认1dp的边框,传入参数则可以自定义边框大小
borderColor:设置边框颜色的方法
上面的代码实现了下图中按钮二


Android-告别手写drawable,用代码快速构建按钮效果_第2张图片
Screenshot_2019-06-09-12-56-10-532_com.lm.quickdrawabledemo.png

当我们需要做按钮的按下效果的时候,可以用下面的方法来实现

new QuickDrawable().corner()
                .color(Color.RED)
                .addToPressed(true)
                .color(Color.CYAN)
                .addToPressed(false)
                .textColor(Color.BLUE,Color.YELLOW)
                .into(btn3);

首先是按照我们图一和图二的方法。设置按钮的样式,然后用addToPressed使前面设置的样式成为按钮的pressed的样式。这样便可以实现按钮按下的效果。
当然,不止可以这样用。还有其他的方式。下面就来看一下我们的方法说明。
addToPressed(boolean b):这个方法是将此方法调用前面的样式设置成按钮效果。true和false分别表示Pressed的true和false.和我们平常写drawable文件中的意思一样。
addPressed(int backgroundColor,boolean b):如果不需要各种圆角边框,只需要直接设置颜色,可以用这个方法。
addPressedDrawable(Drawable drawable,boolean b):可以使用drawable设置效果。当我们需要使用图片或者其他drawable资源作为点击效果的时候,可以使用这个方法.
除了上面这些还有
addChecked
addToChecked
addCheckedDrawable
addEnable
addToEnable
addEnableDrawable
这些可以设置各种状态下的背景样式。
如果需要实现文字颜色变化。这里提供了这个方法

textColor(int uncheck,int check)

可以设置正常状态下文字颜色和选中或者按下时文字的颜色
根据这几个方法。我们就可以这样做

QuickDrawable quickDrawable=new QuickDrawable();
//标签切换效果
        quickDrawable
                .corner(20,0,20,0)
                .color(Color.RED)
                .addToChecked(true)
                .borderColor(Color.RED)
                .corner(20,0,20,0)
                .addToChecked(false)
                 .textColor(Color.RED,Color.WHITE)
                .into(rbLeft);
        quickDrawable
                .corner(0,20,0,20)
                .color(Color.RED)
                .addToChecked(true)
                .borderColor(Color.RED)
                .corner(0,20,0,20)
                .addToChecked(false)
                .textColor(Color.RED,Color.WHITE)
                .into(rbRight);

这样我们就实现了下图这种我们经常用到的RadioButton切换效果

Android-告别手写drawable,用代码快速构建按钮效果_第3张图片
Screenshot_2019-06-09-13-12-35-022_com.lm.quickdrawabledemo.png

github地址: https://github.com/MundyL/QuickDrawable

你可能感兴趣的:(Android-告别手写drawable,用代码快速构建按钮效果)