美文网首页AndroidAndroid开发感悟Android技术总结
你讨厌写selector背景了吗?手摸手教你封装个控件!

你讨厌写selector背景了吗?手摸手教你封装个控件!

作者: _deadline | 来源:发表于2016-11-13 14:26 被阅读7951次

前段时间项目里要写好几个按下去状态变化的button, 于是在drawable文件夹里写了一堆文件, 想想好烦啊, 也是浪费时间,搞了一堆文件,还要起名,真心烦!

一气之下, 一劳永逸, 写一个控件,各种属性代码xml配置或者代码设置。因此也就有了StateButton。

其实实现并不难,只是比较烦,一堆属性。 有兴趣的看看。

效果图:

image.png stateButton.gif

有哪些功能:

 //设置圆角度
 app:radius="5dp"

//设置左右为半圆, 不用计算radius
 app:round="true"

//设置背景切换动画时长
 app:animationDuration="200"

//设置dash            
 app:strokeDashGap="2dp"

//设置dash width
 app:strokeDashWidth="5dp"

//设置正常显示的边框宽度
 app:normalStrokeWidth="2dp"

//设置按下时显示的边框宽度
 app:pressedStrokeWidth="2dp"

//设置不可用时(enable = false)显示的边框宽度
 app:unableStrokeWidth="2dp"

//设置正常显示的边框颜色           
 app:normalStrokeColor="@android:color/white"

//设置按下时显示的边框颜色
 app:pressedStrokeColor="@android:color/white"

//设置不可用时(enable = false)显示的边框颜色
 app:unableStrokeColor="@android:color/white"

 //设置正常显示的文字颜色
 app:normalTextColor="@android:color/white"

//设置按下状态显示的文字颜色
 app:pressedTextColor="@android:color/white"

//设置不可用时(enable = false)显示的文字颜色
 app:unableTextColor="@android:color/white"

//设置正常显示的背景颜色            
 app:normalBackgroundColor="@color/colorPrimaryDark"

//设置按下状态显示的背景颜色
 app:pressedBackgroundColor="@color/colorPrimaryDark"

//设置不可用时(enable = false)背景颜色
 app:unableBackgroundColor="@color/colorPrimaryDark"

https://github.com/niniloveyou/StateButton

感觉还可以的star下谢谢!
201609272123578195.gif

你不点个赞吗?

相关文章

网友评论

  • 敬凡丶:正圆形按钮怎么设置?
    _deadline:@敬凡丶 app:round="true"
  • ppyy一号:必须设置padding才能显示文本么?
    _deadline:不是的,github上反映的关于padding的都是按钮非常小的时候文字会被遮盖,是系统主题的问题,通过设置padding可以解决,如果没有遮盖的话,正常使用就行了
  • 13871066fc58:点击后颜色变了并保持颜色 这种效果无法实现
    _deadline: @13871066fc58 首先使用github上最新的版本,其次你说的那种情况,是setEnable(false)的情况下才会出现
  • Leo_Zheng:很实用
  • 75437e238974:设置背景颜色在4.0 4.1.x上没有效果 @_deadline
  • 尼诺和尼可:很强大,谢谢
    _deadline: @ninoliverpool 谢谢支持!
  • 5d3cb5c63b04:这个受限v7包,不爱用,直接继承Button去写的话,兼容性会更好
    _deadline: @tan_sk这也是为什么我没有放到jCenter的原因,因为有的可能需要继承button甚至textView
    5d3cb5c63b04:@_deadline 感谢楼主的及时回复,刚刚试了下,第二个构造函数里面把主题置0,按钮就不能点击了,要替换成这个android.R.attr.buttonStyle,并且需要添加android:background属性(空白的都行,不然显示效果会很惨)
    _deadline: @tan_sk 你直接把它改成继承button就行了,记住第二个构造函数里的那个主题拿掉就行了
  • bb6128566ef8:如果还能用图片作为背景,那就更通用了
    _deadline: @上善若水慧 那是另外的了,那就要继承imageButton了,文字不好处理
  • 依然范特稀西:很不错,不过5.0以上的都换成点击波纹效果了,一个ripple 文件就可以搞定
    _deadline: @JayZhouFan 看需求吧!不过还是有很多地方需要用到的!
  • 隔壁老C:赞一个。
  • cuixbo:挺实用
  • happy风仔:很不错,谢谢!
    _deadline: @happy风仔 谢谢!
  • 32053af0f957:可以转到csdn吗,备注作者链接
    _deadline: @Message_sky 欢迎转载!
  • yunhen:大神啊 :yum:
  • zall:很方便
  • FTE:创意不错,赞一个
  • 宇宙只有巴掌大:star
    _deadline: @宇宙只有巴掌大 谢谢!
  • kidz:马上用
    _deadline: @kidz 可以
  • 3481319ea87f:默认的MD的按钮效果也不错
  • newszhu:很好,button可以替换了
    _deadline: @newszhu 谢谢支持!
  • 股海浮萍:好棒
    _deadline: @股海浮萍 醒的早你懂的!
    股海浮萍:@_deadline …居然这个是及时通讯啊…刚下载用!
    _deadline: @股海浮萍 谢谢支持!

本文标题:你讨厌写selector背景了吗?手摸手教你封装个控件!

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