文档章节

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

 起伏
发布于 2016/11/13 14:25
字数 414
阅读 507
收藏 31

前段时间项目里要写好几个按下去状态变化的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

###你不点个赞吗?

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 1
码字总数 414
作品 0
徐州
Android-UI控件

手摸手教你写 Slack 的 Loading 动画 四步实现: 画布旋转及线条变化动画(Canvas Rotate Line Change) 画布旋转动画(Canvas Rotate) 画布旋转圆圈变化动画(Canvas Rotate Circle Change...

掘金官方
01/12
0
0
手摸手-100行代码实现一个功能完善的图片懒加载

本文相对比较初级,为了节约时间,请小神及其以上级别的同学直接忽略。 有同学可能会问:那么多第三方库,为什么要自己动手写呢。景科同学的想法很简单,因为本人目前还是一个前端小白,只有...

景科同学
01/22
0
0
商城购物车加减控件的简单封装

我们都知道,购物车是做商城项目必不可少的一个环节,购物车中的加减控件就是商城中的重中之重,最近项目中也用到了加减控件,但是使用起来样式不能随便更改,决定简单封装一下,以后用到的时...

sinat_36668731
2017/08/14
0
0
用C#打造"QQ对战平台挤房器"

一、什么是“QQ对战平台挤房器”? 喜欢在“QQ对战平台”或“浩方对战平台”玩游戏的人都知道。平常平台上的房间基本很多都是人满的,如果想找个房间,那可是要费好长的时间来“挤”才能进去...

吞吞吐吐的
2017/09/12
0
0
手撸一个安装包制作工具(2) --界面库

OK,开始写代码. 界面 先放上要做成的最终界面 (仿NSIS的安装界面): 如果要做成这种固定模式的安装界面,其实很简单,资源里创建几个对话框(Dialog),每次下一步时切换对话框就可以了 这里为了灵...

codetask
2016/08/01
152
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Go语言_通神之路(2)

1、包 每个Go程序都是由包构成,从main包开始运行,就是我上一篇讲到的,都是从main函数开始执行,但是必须在main包下面! package mainimport ( "fmt" "math/rand")func ...

木九天
昨天
2
0
51.php-fpm的pool 慢日志 open_basedir 进程管理

12.21 php-fpm的pool 12.22 php-fpm慢执行日志(测试时报错) 12.23 open_basedir 12.24 php-fpm进程管理 12.21 php-fpm的pool: php-fpm里的pool也叫池子,咱们之前加入过www的配置,这个w...

王鑫linux
昨天
0
0
java内存模型概述

1、Java虚拟机运行时数据分区图 程序计数器:线程私有,是一块较小的内存空间,它是当前线程所执行的字节码文件的行号指示器 java虚拟机栈:线程私有,其生命周期与线程相同,这也就是我们平...

京一
昨天
0
0
shell学习之test语法

因为if-then语句不能测试退出状态码之外的条件,所以提供了test, 如果test命令中列出的条件成立,test命令就会退出并返回退出状态码0;如果条件不成立,test命令就会退出并返回非零的退出状态...

woshixin
昨天
0
0
openJDK之如何下载各个版本的openJDK源码

如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK的项目 链接...

汉斯-冯-拉特
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部