美文网首页Android知识Android开发Android技术知识
翻翻git之---一个类解决圆角,虚线等自定义Button拒绝一

翻翻git之---一个类解决圆角,虚线等自定义Button拒绝一

作者: 王亟亟 | 来源:发表于2016-12-12 17:37 被阅读184次

    转载请注明出处:王亟亟的大牛之路

    最近都在疯狂的”肝”,偶尔看看js然后打游戏,有点”荒废学业”不是太好,然后强迫自己发一篇,然后正好看知道这个类还不错,就推荐给大家。

    素材来源:https://github.com/niniloveyou/StateButton

    先来安利下我的收纳库:https://github.com/ddwhan0123/Useful-Open-Source-Android日更,精挑细选,希望你喜欢!


    先看下运行效果:

    基本上2b的ui ux需要的基本按钮样式都有了 圈出来的复制到你的项目里就OK了

    我们来看下他是怎么实现的(就一个类和一些自定义xml内容)

    public class StateButton extends AppCompatButton

    继承于v7下的AppCompatButton,来应对一些相对复杂的应用场景


    构造函数

    自定义view”标配的构造函数”,所有初始化逻辑都在setup(attrs);方法里执行。

    setup(attrs)方法一大堆初始化,这里代码不贴了,文字解释下干了些什么

    首先构建了一个多维数组,然后给他进行了初始化操作,分别是

    按压的状态, 获得焦点是的状态, 一般的样式, 不可使用时的样式

    然后通过getContext().obtainStyledAttributes(attrs, R.styleable.StateButton);

    获取attires.xml文件里预设的从布局文件里传来的自定义参数,然后再各类set进行渲染,做初始化逻辑。

    这里提一下,测绘操作

    他的圆角逻辑是,如果有设置圆角,那就按照传入的圆角值来初始化。如果有圆角逻辑但是没有给具体圆角值,那就根据高度来设置圆角值。

    其他就是一大堆set的东西了,没什么营养

    这个库实现不难,大家只要想到了都可以做出来,但是作者想到了,也做了,并且开源出来这就是功德,在这里感谢下原作者https://github.com/niniloveyou/StateButton(如果有小伙提示,作者非原创 我会删除本文)


    总结:

    构造函数初始化一系列参数,和默认值(按下去的状态,初始化的颜色,是否虚线,是否圆角等等等)

    其实低层调用的都是父类的方法

    设置文字颜色setTextColor(ColorStateList colors)–>TextView

    设置背景颜色,虚线等 都是来源于 GradientDrawable

    他是个Drawable的子类

    这里不得不感慨源生sdk的强大,提供给我们如此丰富的api


    闲话:

    最近有很多朋友跟我说“啊呀,感觉安卓没啥东西可以学了啊”,“感觉好荒废啊,没什么进展,在瓶颈期啊”等等的抱怨”

    这样的想法我之前一段时间也有,这边给一个大致的回复

    安卓这几年更新的“新东西”确实不像以前,一个大版本出一堆新产物,6.0 7.0之间确实没有,但是内部实现一直有优化,你对那些优化了解吗?

    Rx溜了么?

    插件化溜了吗?

    系统优化行不行?

    项目解耦行不行?

    其实要学的很多

    这世界已经很浮躁了,不缺梦想家,需要有头脑的实干家!!!加油吧!!!

    有活干或者有开源组能叫我,可以扫微信,当然有技术问题希望一起研究也可以找我

    相关文章

      网友评论

        本文标题:翻翻git之---一个类解决圆角,虚线等自定义Button拒绝一

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