一个功能强大且全面的按钮控件,是目前我见过的最好使的按钮。

支持给按钮添加图标,并且可通过属性设置手指按钮的效果,不需要在写<selector>文件。

项目地址:https://github.com/medyo/fancybuttons

如何添加到工程中:

  1. 导入控件源码

2.导入控件属性文件attrs.xml

01.<?xml version="1.0" encoding="utf-8"?>
02.<resources>
03.<declare-styleable name="FancyButtonsAttrs">
04.<attr name="fb_defaultColor" format="color"  />
05.<attr name="fb_text" format="string"  />
06. 
07.<attr name="fb_textColor" format="color"  />
08.<attr name="fb_iconColor" format="color"  />
09. 
10.<attr name="fb_textFont" format="string"  />
11.<attr name="fb_iconFont" format="string"  />
12. 
13.<attr name="fb_textSize" format="dimension"  />
14.<attr name="fb_iconResource" format="integer"  />
15.<attr name="fb_fontIconResource" format="string"  />
16.<attr name="fb_fontIconSize" format="dimension"  />
17.<attr name="fb_iconPosition" format="enum">
18.<enum name="left" value="1" />
19.<enum name="right" value="2" />
20.<enum name="top" value="3" />
21.<enum name="bottom" value="4" />
22.</attr>
23. 
24.<attr name="fb_textPosition" format="enum">
25.<enum name="left" value="1" />
26.<enum name="right" value="2" />
27.<enum name="top" value="3" />
28.<enum name="bottom" value="4" />
29.</attr>
30. 
31.<attr name="fb_textGravity" format="enum">
32.<enum name="top" value="0x30" />
33.<enum name="bottom" value="0x50" />
34.<enum name="left" value="0x03" />
35.<enum name="right" value="0x05" />
36.<enum name="center_vertical" value="0x10" />
37.<enum name="fill_vertical" value="0x70" />
38.<enum name="center_horizontal" value="0x01" />
39.<enum name="fill_horizontal" value="0x07" />
40.<enum name="center" value="0x11" />
41.<enum name="fill" value="0x77" />
42.<enum name="clip_vertical" value="0x80" />
43.<enum name="clip_horizontal" value="0x08" />
44.<enum name="start" value="0x00800003" />
45.<enum name="end" value="0x00800005" />
46.</attr>
47. 
48.<attr name="fb_iconPaddingLeft" format="dimension" />
49.<attr name="fb_iconPaddingRight" format="dimension" />
50.<attr name="fb_iconPaddingTop" format="dimension" />
51.<attr name="fb_iconPaddingBottom" format="dimension" />
52. 
53.<attr name="fb_borderColor" format="color" />
54.<attr name="fb_borderWidth" format="dimension"/>
55.<attr name="fb_focusColor" format="color" />
56.<attr name="fb_radius" format="dimension" />
57. 
58.<attr name="fb_ghost" format="boolean"></attr>
59.</declare-styleable>
60. 
61.</resources>

属性很强大呀!

3.导入assets资源文件,包含俩个文件夹:fonts、iconfonts。

ok,接下来就可以使用控件了。

如何使用:

  1. 布局文件中添加命名空间,这是使用自定义控件必须要做的。

1.xmlns:fancy="http://schemas.android.com/apk/res-auto"

如下图:

2. 创建控件

01.<mehdi.sakout.fancybuttons.FancyButton android:layout_width="wrap_content" android:layout_height="wrap_content"
02.fancy:fb_text="Create an account"
03.fancy:fb_textColor="#FFFFFF"
04.fancy:fb_radius="30dp"
05.fancy:fb_defaultColor="#ff5f69"
06.fancy:fb_focusColor="#ff838b"
07.fancy:fb_borderWidth="1dp"
08.fancy:fb_borderColor="#FFFFFF"
09./>

完整的实例可以点击上面的"下载源码"按钮,那是我做的demo。

接下来介绍下他的强大属性。

属性:

XML布局文件中使用 Java代码中使用 描述
fancy:fb_text setText(String) 按钮上文字
fancy:fb_textColor setTextColor(int) 按钮文字的颜色
fancy:fb_textSize setTextSize(int) 文字的大小
fancy:fb_textFont setCustomTextFont(String) 文字的字体
fancy:fb_textGravity setTextGravity(Int) 文字的对其方式
fancy:fb_iconResource setIconResource(Drawable) 设置按钮上的图标,引用的是个图片
fancy:fb_iconPosition setsetIconPosition(int) 图标相对于文字的位置,有如下值 : Left, Right, Top, Bottom
fancy:fb_fontIconResource setIconResource(String) 和fancy:fb_iconResource一样,也是设置按钮图标的,只是这里引用的是个图标的编码,如:""是下载图标,""是上传图标。实际的原理是将编码设置到TextView上了。
fancy:fb_fontIconSize setFontIconSize(int) 设置以fancy:fb_fontIconResource方式设置的图标的图标大小。
fancy:fb_iconFont setCustomIconFont(String) 设置以fancy:fb_fontIconResource方式设置的图标的图标字体
fancy:fb_borderWidth setBorderWidth(int) 边框的宽度
fancy:fb_borderColor setBorderColor(int) 边框的颜色
fancy:fb_defaultColor setBackgroundColor(int) 手指未触碰时的背景颜色
fancy:fb_focusColor setFocusBackgroundColor(int) 手指按下时的背景颜色
fancy:fb_radius setRadius(int) 设置按钮为圆角的,该属性用于设置圆角的半径
fancy:fb_iconPaddingLeft setIconPadding(int,int,int,int) 图标的左间距,一般用于设置图标与文字的距离
fancy:fb_iconPaddingRight setIconPadding(int,int,int,int) 图标的右间距
fancy:fb_iconPaddingTop setIconPadding(int,int,int,int) 图标的上间距
fancy:fb_iconPaddingBottom setIconPadding(int,int,int,int) 图标的下间距
fancy:fb_ghost setGhost(boolean) 是否为空洞效果,空洞效果时,按钮背景透明,触碰时只有边框会产生效果

FancyButtons一个漂亮按钮的库的更多相关文章

  1. 分享一个漂亮按钮插件FancyButtons

    一转眼,2018年的第10天就这样过去了.回看17年,曾经做了些啥都忘记了,就像每一天写日志时的样子(双手放在键盘上,怒着嘴,抬着头,望着天花板), 然后突然记得好像好久没有写随笔了(@_@).自从配 ...

  2. 一个漂亮的JavaScript“警告”替代品

    下载 一个漂亮的JavaScript"警告"替代品 安装 $ npm安装-节省sweetalert 使用 从"sweetalert"进口swal; 横波测井(& ...

  3. PS网页设计教程XXIV——从头设计一个漂亮的网站

    作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...

  4. Android 加入一个动作按钮

    在XML中声明一个动作按钮 所有的动作按钮和其他的可以利用的items都定义在menu资源文件夹中的XML文件中.为了增加一个动作按钮到工具栏,需要在工程 /res/menu/ 目录下面创建一个新的X ...

  5. 一个漂亮而强大的自定义view

    代码地址如下:http://www.demodashi.com/demo/13502.html 简介 主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性设 ...

  6. 一个漂亮而强大的RecyclerView

    代码地址如下:http://www.demodashi.com/demo/13470.html 简介 主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果.极简通用的万能适配器A ...

  7. 再见HTML ! 用纯Python就能写一个漂亮的网页

    我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互: 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...

  8. 如何持续集成/交付一个开源.NET函数库到Nuget.org

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最 ...

  9. Javascript的一个生产PDF的库: unicode和中文问题的解决

    Javascript的一个生产PDF的库: unicode和中文问题的解决基于canvas和jspdf库, 实现用javascript的支持中文pdf生成实用工具.参考:http://javascri ...

随机推荐

  1. js 获取地址栏域名以及URL

    console.log(window.location.host) console.log(document.domain) console.log(window.location.href) con ...

  2. PHP获得真实客户端的真实时用到的IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

    REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIENT_IP 是代理服务器发送的HTTP头. ...

  3. 使用 if 语句

    与很多编程语言一样,if 表达式用来处理逻辑条件.在 R 中,逻辑条件通常表达为某个表达式返回的单值逻辑向量.例如,我们可以写一个简单的函数 check_positive,如果输入一个正数则返回 1, ...

  4. 利用JS将页面中包含“一个”字段值的元素改为红色

    document.body.innerHTML = document.body.innerHTML.replace(/一个/ig,"<span style='color: red;'& ...

  5. Android之第三方平台实现多平台分享操作

    开发中常常遇到分享操作,当用到多种分享时,如:QQ,微信,微博,短信等,可以借助第三方平台来完成,此博客主要借助mob平台来完成相关操作,当然也可以借助其他平台,如友盟等. 先来看看效果图: 如图看出 ...

  6. python实现:将文本文件分割成多个小文本文件(php也可实现)

    前两天有个朋友说,想实现一个文本文件按照固定行数进行分割成多个文本文件,却不知如何实现.如果数据量小手动分割下就好了,如果数据量很大的话手动完成实在太耗费人力了,也不现实.那么就需要借助脚本去实现.既 ...

  7. Confluence 6 使用一个页面为站点的默认页面

    如果你希望有更多的控制,你可以选择一个 Confluence 的原始页面为你的站点载入页面来替换掉将用户发到主面板中.请查 Configuring the Site Home Page 页面来查看更多 ...

  8. TTL的具体含义

    TTL(Time To Live)生存时间值,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去.如果在I ...

  9. python爬虫脚本下载YouTube视频

    python爬虫脚本下载YouTube视频 爬虫 python YouTube视频 工作环境: python 2.7.13 pip lxml, 安装 pip install lxml,主要用xpath ...

  10. java重写toString方法

    在输出对象属性时,重写toString按照你希望的输出形式重写 object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码.所以当你要想按 ...