如果对系统的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相关推荐

  1. android自定义样式大全:shape,selector,layer-list,style,动画全部内容

    原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...

  2. android button的selector

    实现按钮的selector <?xml version="1.0" encoding="utf-8"?> <selector xmlns:an ...

  3. Android美工坊:Selector选择器的使用

    Android selector选择器可以让你切换自定义的背景风格,比如button.ListView.或者布局点击时候的背景切换等,都需要用到它 背景可以是自定义到颜色,或者图片资源 首先需要在你的 ...

  4. Android 自定义Button按钮显示样式(正常、按下、获取焦点)

    2019独角兽企业重金招聘Python工程师标准>>> 现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天 ...

  5. Android—修改button属性

    一般安卓里的普通按钮控件灰灰的,比较单调,我们可以给按钮加上背景图片,或者自定义按钮的圆角,颜色等属性. 下面用代码举例: <Button android:id="@+id/reset ...

  6. android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...

    现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...

  7. Android之Button练习

    常用功能 先声明创建一个Button activity_main.xml <?xml version="1.0" encoding="utf-8"?> ...

  8. android自定义button样式【转】

    在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...

  9. android自定义button样式

    在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...

最新文章

  1. 知识图谱前端插件_大型前端项目可持续演进开发的思考
  2. SQL Server之视图基础知识
  3. mysql可以存储整数数值的是_MySQL知识树 数值类型 整数
  4. mysql 的 sql_mode.only_full_group_by属性解析
  5. list、tuple、dict、set、map
  6. 搞懂webdriver的底层原理,才敢说自己懂自动化!
  7. JS是按值传递还是按引用传递?
  8. 珍惜平时一点一滴,这几个值得跟进学习的阿里、滴滴、微软超级牛人的公众号!...
  9. Mybatis原生dao开发方法实现增删改查
  10. 管理学定律七:责任分散效应与帕金森定律
  11. 石头机器人拖地水量调节_拖地组件再评测:正式版 家有 石头科技T4 米家一代 水箱拖地组件...
  12. 思科路由器如何强行中断命令
  13. Xiaojie雷达之路---DPM External Functions详解
  14. Hash表的初步认识
  15. 自定义View 实现圆形seekbar (音量旋钮)
  16. 软件开发项目为什么要做第三方软件测试,软件测评机构怎么选择?
  17. 网络推广和网络营销的区别
  18. 蓝牙BLE5.1手柄方案
  19. Nvidia Jetson AGX Xavier 硬件相关
  20. csdn官网第一次写博客 一直显示不要使用默认标题

热门文章

  1. 连接Mysql弹出2005_正确安装数据库SQL2005和安装出现的问题的解决方法
  2. html保存按钮代码_如何防止Joomla编辑器删除HTML代码
  3. websocket html5 api,HTML5 新特性之 Websocket
  4. 如何搭建个人博客或企业官网
  5. Python按行读取txt文件
  6. 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
  7. 销售行业转行软件测试,这是我成功的感受...
  8. pythondjango是干什么的_python django框架是什么?怎么使用?
  9. gz 解压 linux_Linux-Ubuntu常用命令-03-压缩解压
  10. 隐藏版本信息号返回服务器名,Apache服务器隐藏版本号和系统