Android实用View系列之SuperButton(实现shape的大部分功能) | 您所在的位置:网站首页 › superbutton自定义 › Android实用View系列之SuperButton(实现shape的大部分功能) |
作者博客 http://www.jianshu.com/u/51d1fd73fb72 项目地址 https://github.com/lygttpod/SuperTextView 目录 前言 开篇 具体实现 最后 1 前言 在开发过程中我们的按钮基本都有自己的样式风格,有的时候需要搞个圆角,有时候需要边框,有的时候需要虚线边框亦或者需要一个圆形的按钮。想大部分的实现方式都是写一个shape文件,在里边定义边框圆角等相关属性,如果项目中类似按钮很多切风格各不相同,那我们就需要写很多很多shape文件,这是我们无法忍受的。而SuperButton的出现可以帮你解决以上问题,从此远离shape文件的编写。 有图有真相! SuperButton 2 开篇 开始之前我们先来看看shape文件是如何编写的。 以上shape文件列出了常用的属性,当然并不是所有属性都会用到,我们就以这个shape文件作为参考开始本篇文章的分析。 我们知道写好shape文件之后是通过android:background="@drawable/shape"这样的方式引入的,那么Android有没有方法去获取shape相关属性的类呐,经过一番查阅发现还是有个GradientDrawable类可以实现的,关于GradientDrawable的介绍请自行Google了解。 通过GradientDrawable的源码可以看到里边有很多方法和shape各个节点的名称一样,所以这正是我们需要的类,剩下的就是开始用GradientDrawable实现我们的封装之路。 3 具体实现 由于代码不复杂,看下注释也都能理解,就直接贴代码了。 先初始化一下gradientDrawable = new GradientDrawable(); 通过一下方法可以整体设置四个圆角也可以对各个角分别设置。 设置渐变色的相关属性。 对应shape中的size设置shape布局大小及设置边框和分割线。 至此需要的方法都已经写完了,剩下的就是自定义view继承button,添加自己定义的属性。 然后在代码中这样使用: 通过配置shapeType的类型可以以此实现矩形,椭圆,线和圆环。 至此关于shape代码实现的部分已经完成了,可以实现shape很多中效果,不过细心的你发现按钮按下的触摸反馈没有了,以前都是通过selector去实现的,那么代码能否实现呐。答案肯定是OK啦! 然后把selector设置到setBackground中就好了。 再运行一下,看看效果。 触摸效果 4 最后 看了以上介绍是不是感觉很简单,那就赶快撸起袖子,自己撸一个玩玩吧!毕竟以后不用在写那么多shape文件了,哈哈!以后可以少搬点砖了。 今日推荐
自定义View之渐变圆环进度条 |
CopyRight 2018-2019 实验室设备网 版权所有 |