美文网首页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