android 按钮 代码实现,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:设置控件的圆角,提供了一个参数的方法和四个参数的方法,设置一个参数则四个角相等,也可以分别设置四个角的圆角。

上面的代码效果如下

a0221274913e

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:设置边框颜色的方法

上面的代码实现了下图中按钮二

a0221274913e

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

a0221274913e

Screenshot_2019-06-09-13-12-35-022_com.lm.quickdrawabledemo.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值