Android实用View系列之SuperButton(实现shape的大部分功能) 您所在的位置:网站首页 superbutton自定义 Android实用View系列之SuperButton(实现shape的大部分功能)

Android实用View系列之SuperButton(实现shape的大部分功能)

2024-01-20 15:51| 来源: 网络整理| 查看: 265

作者博客

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 实验室设备网 版权所有