<shape>和<selector>在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape>和<selector>。
可以这样说,<shape>和<selector>在美化控件中的作用是至关重要。

在看这篇文章之前,可以看下这个小例子:镂空按钮的实现

1.Shape
简介

作用:XML中定义的几何形状

位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:Android:background="@drawable/文件的名称"

属性:

<shape>  Android:shape=["rectangle" | "oval" | "line" | "ring"]

其中rectagle矩形,oval椭圆,line水平直线,ring环形

<shape>中子节点的常用属性:

<gradient>  渐变

Android:startColor

起始颜色

Android:endColor

结束颜色            

Android:angle

渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;

Android:type

渐变的样式 liner线性渐变 radial环形渐变 sweep

<solid >  填充

Android:color

填充的颜色

<stroke >描边

Android:width

描边的宽度

Android:color

描边的颜色

Android:dashWidth

表示'-'横线的宽度

Android:dashGap

表示'-'横线之间的距离

<corners >圆角

Android:radius

圆角的半径 值越大角越圆

Android:topRightRadius

右上圆角半径

Android:bottomLeftRadius

右下圆角角半径

Android:topLeftRadius

左上圆角半径

Android:bottomRightRadius

左下圆角半径

<padding >填充

android:bottom="1.0dip"

底部填充

android:left="1.0dip"

左边填充

android:right="1.0dip"

右边填充

android:top="0.0dip"

上面填充

2.Selector
简介

根据不同的选定状态来定义不同的现实效果

分为四大属性:

android:state_selected 是选中

android:state_focused 是获得焦点

android:state_pressed 是点击

android:state_enabled 是设置是否响应事件,指所有事件

另:

android:state_window_focused 默认时的背景图片

引用位置:res/drawable/文件的名称.xml

使用的方法:

Java代码中:R.drawable.文件的名称

XML中:Android:background="@drawable/文件的名称"

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <selector xmlns:Android="http://schemas.android.com/apk/res/android">
  3. <!-- 默认时的背景图片-->
  4. <item Android:drawable="@drawable/pic1" />
  5. <!-- 没有焦点时的背景图片 -->
  6. <item
  7. Android:state_window_focused="false"
  8. android:drawable="@drawable/pic_blue"
  9. />
  10. <!-- 非触摸模式下获得焦点并单击时的背景图片 -->
  11. <item
  12. Android:state_focused="true"
  13. android:state_pressed="true"
  14. android:drawable= "@drawable/pic_red"
  15. />
  16. <!-- 触摸模式下单击时的背景图片-->
  17. <item
  18. Android:state_focused="false"
  19. Android:state_pressed="true"
  20. Android:drawable="@drawable/pic_pink"
  21. />
  22. <!--选中时的图片背景-->
  23. <item
  24. Android:state_selected="true"
  25. android:drawable="@drawable/pic_orange"
  26. />
  27. <!--获得焦点时的图片背景-->
  28. <item
  29. Android:state_focused="true"
  30. Android:drawable="@drawable/pic_green"
  31. />
  32. </selector>
3.layer-list
简介:

将多个图片或上面两种效果按照顺序层叠起来

例子:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <bitmap android:src="@drawable/android_red"
  5. android:gravity="center" />
  6. </item>
  7. <item android:top="10dp" android:left="10dp">
  8. <bitmap android:src="@drawable/android_green"
  9. android:gravity="center" />
  10. </item>
  11. <item android:top="20dp" android:left="20dp">
  12. <bitmap android:src="@drawable/android_blue"
  13. android:gravity="center" />
  14. </item>
  15. </layer-list>
  1. <ImageView
  2. android:layout_height="wrap_content"
  3. android:layout_width="wrap_content"
  4. android:src="@drawable/layers" />

效果图:

4.最后

以上三个标签可以揉合到一块儿来使用,所要实现的效果就是上面三种标签的说明,比如下面这个例子:

  1. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  2. <item android:state_pressed="true">
  3. <layer-list>
  4. <item android:bottom="8.0dip">
  5. <shape>
  6. <solid android:color="#ffaaaaaa" />
  7. </shape>
  8. </item>
  9. <item>
  10. <shape>
  11. <corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />
  12. <solid android:color="#ffaaaaaa" />
  13. <padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" />
  14. </shape>
  15. </item>
  16. <item>
  17. <shape>
  18. <corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />
  19. <solid android:color="@color/setting_item_bgcolor_press" />
  20. </shape>
  21. </item>
  22. </layer-list>
  23. </item>
  24. <item>
  25. <layer-list>
  26. <item android:bottom="8.0dip">
  27. <shape>
  28. <solid android:color="#ffaaaaaa" />
  29. </shape>
  30. </item>
  31. <item>
  32. <shape>
  33. <corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />
  34. <solid android:color="#ffaaaaaa" />
  35. <padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" />
  36. </shape>
  37. </item>
  38. <item>
  39. <shape>
  40. <corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />
  41. <solid android:color="@color/setting_item_bgcolor" />
  42. </shape>
  43. </item>
  44. </layer-list>
  45. </item>
  46. </selector>

from:http://blog.csdn.net/brokge/article/details/9713041

【转】Android开发:shape和selector和layer-list的(详细说明)的更多相关文章

  1. android 开发:shape和selector和layer-list的(详细说明)

    目录(?)[+] Shape 简介 使用的方法 属性 Selector 简介 使用的方法 layer-list 简介 例子 最后   <shape>和<selector>在An ...

  2. [Android UI] shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  3. android使用shape做selector按钮按下和弹起的动画

    平时效果:   按下效果: selector代码: <?xml version="1.0" encoding="utf-8"?> <selec ...

  4. Android——shape和selector和layer-list的(详细说明 转)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...

  5. Android之shape与selector实现圆角

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  6. 关于shape和selector和layer-list的drawable详细说明

    在Android开发中,但凡涉及控件的的特效问题,<shape>,<selector>以及<layer-list>都是不可或缺的drawable.但是发现有同事并不 ...

  7. Android开发环境搭建 for windows (linux类似) 详细可参考“文件”中“Android开发环境搭建.pdf ”

    ADT-Bundle for Windows 是由Google Android官方提供的集成式IDE,已经包含了Eclipse,你无需再去下载Eclipse,并且里面已集成了插件,它解决了大部分新手通 ...

  8. Android开发:shape和selector和layer-list的(详细说明)

    http://blog.csdn.net/brokge/article/details/9713041

  9. Android开发——LinearLayout和RelativeLayout的性能对比

    0. 前言 我们都知道新建一个Android项目自动生成的Xml布局文件的根节点默认是RelativeLayout,这不是IDE默认设置,而是由android-sdk\tools\templates\ ...

随机推荐

  1. ReSharper+Devexpress 删除光标之后的换行

    echo. >"$(ProjectDir)\Properties\licenses.licx" 官方链接

  2. asp get与post获取的区别

    1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...

  3. Change - Why we need coding standards

    Change - Why we need coding standards I have the idea of coding standards when I have to review my t ...

  4. 推荐几款基于Bootstrap的响应式后台管理模板

    1.Admin LTE 该模版开源免费. AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3的框架.高度可定制的,易于使用.支持很多的屏幕分辨率适合从小型移动设备到大型台式机. ...

  5. Codis3.2 安装部署

    转载请注明出处:https://www.cnblogs.com/format-ch/p/9323841.html 一.软件下载 下载 下载 zookeeper (Codis注册中心) http://m ...

  6. csharp: using OleDb Getting the identity of the most recently added record

    /// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString&quo ...

  7. JavaScript常用类

    JS常用类 一.Number 1.常用数字 整数:10 小数:3.14 科学计数法:1e5 | 1e-5 正负无穷:Infinity | -Infinity 2.常用进制 二进制:0b1010 八进制 ...

  8. layui-学习03-页面元素

    布局: 相关样式: 包裹层 : layui-container ( 响应式 宽度 ) layui-fluid ( 100% 宽度 )行        : layui-row列        : lay ...

  9. js 闪动元素

    <style> #div1{width:500px;height:100px;background:#888;font-size:5px;margin:0 auto;color:yello ...

  10. Linux基础之命令练习Day7-nginx,nfs

    一. Nginx Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗 ...