美文网首页
Android-告别手写drawable,用代码快速构建按钮效果

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

作者: Mundy | 来源:发表于2019-06-09 13:14 被阅读0次

    做为一个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:设置控件的圆角,提供了一个参数的方法和四个参数的方法,设置一个参数则四个角相等,也可以分别设置四个角的圆角。
    上面的代码效果如下


    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:设置边框颜色的方法
    上面的代码实现了下图中按钮二


    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切换效果

    Screenshot_2019-06-09-13-12-35-022_com.lm.quickdrawabledemo.png
    github地址:https://github.com/MundyL/QuickDrawable

    相关文章

      网友评论

          本文标题:Android-告别手写drawable,用代码快速构建按钮效果

          本文链接:https://www.haomeiwen.com/subject/qnngxctx.html