Android-----使用Button特效selector+shape
如果对系统的ui效果不满意,可以用shape进行自定义
当然除了使用drawable这样的图片外今天谈下自定义图形shape的方法,对于button控件android上支持以下几种属性shape、gradient、stroke、corners等。
我们就以目前系统的button的selector为例说下:
<shape><gradientandroid:startcolor="#ff8c00"android:endcolor="#ffffff"android:angle="270" /><strokeandroid:width="2dp"android:color="#dcdcdc" /><cornersandroid:radius="2dp" /><paddingandroid:left="10dp"android:top="10dp"android:right="10dp"android:bottom="10dp" /></shape>
对于上面,这条shape的定义,分别为渐变,在gradient中startcolor属性为开始的颜色,endcolor为渐变结束的颜色,下面的angle是角度。接下来是stroke可以理解为边缘,corners为拐角这里radius属性为半径,最后是相对位置属性padding。
对于一个button完整的定义可以为:
<?xml version="1.0" encoding="utf-8"?> <selectorxmlns:android="http://www.norkoo.com"><item android:state_pressed="true" ><shape><gradientandroid:startcolor="#ff8c00"android:endcolor="#ffffff"android:angle="270" /><strokeandroid:width="2dp"android:color="#dcdcdc" /><cornersandroid:radius="2dp" /><paddingandroid:left="10dp"android:top="10dp"android:right="10dp"android:bottom="10dp" /></shape></item><item android:state_focused="true" ><shape><gradientandroid:startcolor="#ffc2b7"android:endcolor="#ffc2b7"android:angle="270" /><strokeandroid:width="2dp"android:color="#dcdcdc" /><cornersandroid:radius="2dp" /><paddingandroid:left="10dp"android:top="10dp"android:right="10dp"android:bottom="10dp" /></shape></item><item> <shape><gradientandroid:startcolor="#ff9d77"android:endcolor="#ff9d77"android:angle="270" /><strokeandroid:width="2dp"android:color="#fad3cf" /><cornersandroid:radius="2dp" /><paddingandroid:left="10dp"android:top="10dp"android:right="10dp"android:bottom="10dp" /></shape></item> </selector>
注意!提示大家,以上几个item的区别主要是体现在state_pressed按下或state_focused获得焦点时,当当来判断显示什么类型,而没有state_xxx属性的item可以看作是常规状态下。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_active=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
elements:
<selector>
必须。必须是根元素。包含一个或多个<item>元素。
attributes:
xmlns:android
string,必须。定义xml的命名空间,必须是
“http://schemas.android.com/apk/res/android”.
<item>
定义特定状态的color,通过它的特性指定。必须是<selector>的子元素。
attributes:
android:color
16进制颜色。必须。这个颜色由rgb值指定,可带alpha。
这个值必须以“#”开头,后面跟随alpha-red-green-blue信息:
l #rgb
l #argb
l #rrggbb
l #aarrggbb
android:state_pressed
boolean。“true”表示按下状态使用(例如按钮按下);“false”表示非按下状态使用。
android:state_focused
boolean。“true”表示聚焦状态使用(例如使用滚动球/d-pad聚焦button);“false”表示非聚焦状态使用。
android:state_selected
boolean。“true”表示选中状态使用(例如tab打开);“false”表示非选中状态使用。
android:state_checkable
boolean。“true”表示可勾选状态时使用;“false”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。)
android:state_checked
boolean。“true”表示勾选状态使用;“false”表示非勾选状态使用。
android:state_enabled
boolean。“true”表示可用状态使用(能接收触摸/点击事件);“false”表示不可用状态使用。
android:window_focused
boolean。“true”表示应用程序窗口有焦点时使用(应用程序在前台);“false”表示无焦点时使用(例如notification栏拉下或对话框显示)。
注意:记住一点,statelist中第一个匹配当前状态的item会被使用。因此,如果第一个item没有任何状态特性的话,那么它将每次都被使用,这也是为什么默认的值必须总是在最后(如下面的例子所示)。
examples:
xml文件保存在res/color/button_text.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
这个layout xml会应用colorstatelist到一个view上:
<button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textcolor="@color/button_text" />
Android-----使用Button特效selector+shape相关推荐
- android自定义样式大全:shape,selector,layer-list,style,动画全部内容
原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...
- android button的selector
实现按钮的selector <?xml version="1.0" encoding="utf-8"?> <selector xmlns:an ...
- Android美工坊:Selector选择器的使用
Android selector选择器可以让你切换自定义的背景风格,比如button.ListView.或者布局点击时候的背景切换等,都需要用到它 背景可以是自定义到颜色,或者图片资源 首先需要在你的 ...
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
2019独角兽企业重金招聘Python工程师标准>>> 现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天 ...
- Android—修改button属性
一般安卓里的普通按钮控件灰灰的,比较单调,我们可以给按钮加上背景图片,或者自定义按钮的圆角,颜色等属性. 下面用代码举例: <Button android:id="@+id/reset ...
- android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...
现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...
- Android之Button练习
常用功能 先声明创建一个Button activity_main.xml <?xml version="1.0" encoding="utf-8"?> ...
- android自定义button样式【转】
在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...
- android自定义button样式
在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...
最新文章
- 知识图谱前端插件_大型前端项目可持续演进开发的思考
- SQL Server之视图基础知识
- mysql可以存储整数数值的是_MySQL知识树 数值类型 整数
- mysql 的 sql_mode.only_full_group_by属性解析
- list、tuple、dict、set、map
- 搞懂webdriver的底层原理,才敢说自己懂自动化!
- JS是按值传递还是按引用传递?
- 珍惜平时一点一滴,这几个值得跟进学习的阿里、滴滴、微软超级牛人的公众号!...
- Mybatis原生dao开发方法实现增删改查
- 管理学定律七:责任分散效应与帕金森定律
- 石头机器人拖地水量调节_拖地组件再评测:正式版 家有 石头科技T4 米家一代 水箱拖地组件...
- 思科路由器如何强行中断命令
- Xiaojie雷达之路---DPM External Functions详解
- Hash表的初步认识
- 自定义View 实现圆形seekbar (音量旋钮)
- 软件开发项目为什么要做第三方软件测试,软件测评机构怎么选择?
- 网络推广和网络营销的区别
- 蓝牙BLE5.1手柄方案
- Nvidia Jetson AGX Xavier 硬件相关
- csdn官网第一次写博客 一直显示不要使用默认标题
热门文章
- 连接Mysql弹出2005_正确安装数据库SQL2005和安装出现的问题的解决方法
- html保存按钮代码_如何防止Joomla编辑器删除HTML代码
- websocket html5 api,HTML5 新特性之 Websocket
- 如何搭建个人博客或企业官网
- Python按行读取txt文件
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
- 销售行业转行软件测试,这是我成功的感受...
- pythondjango是干什么的_python django框架是什么?怎么使用?
- gz 解压 linux_Linux-Ubuntu常用命令-03-压缩解压
- 隐藏版本信息号返回服务器名,Apache服务器隐藏版本号和系统