项目中的美化可是很重要的一步,虽然很多时候我们都可以通过图片来完成各种效果,不过但是觉得android给我们提供了那么强大的xml界面编辑功能,不用怪可惜的,今天刚好用到android:shap,也就来给大家说说。。。


先看下面的代码:
  1. <shape>
  2. <!-- 实心 -->
  3. <solid android:color="#ff9d77"/>
  4. <!-- 渐变 -->
  5. <gradient
  6. android:startColor="#ff8c00"
  7. android:endColor="#FFFFFF"
  8. android:angle="270" />
  9. <!-- 描边 -->
  10. <stroke
  11. android:width="2dp"
  12. android:color="#dcdcdc" />
  13. <!-- 圆角 -->
  14. <corners
  15. android:radius="2dp" />
  16. <padding
  17. android:left="10dp"
  18. android:top="10dp"
  19. android:right="10dp"
  20. android:bottom="10dp" />
  21. </shape>
复制代码 solid:实心,就是填充的意思
android:color指定填充的颜色

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"

android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。

我们还可以把四个角设定成不同的角度,方法为:
  1. <corners

  2. android:topRightRadius="20dp" 右上角
  3. android:bottomLeftRadius="20dp" 右下角
  4. android:topLeftRadius="1dp" 左上角
  5. android:bottomRightRadius="0dp" 左下角
  6. />
复制代码 这里有个地方需要注意, bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

padding:间隔
这个就不用多说了,XML布局文件中经常用到。


大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:
main.xml:

  1. <Button
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:text="TestShapeButton"
  5. android:background="@drawable/button_selector"
  6. />
  7. >
复制代码 button_selector.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <item android:state_pressed="true" >
  5. <shape>
  6. <!-- 渐变 -->
  7. <gradient
  8. android:startColor="#ff8c00"
  9. android:endColor="#FFFFFF"
  10. android:type="radial"
  11. android:gradientRadius="50" />
  12. <!-- 描边 -->
  13. <stroke
  14. android:width="2dp"
  15. android:color="#dcdcdc"
  16. android:dashWidth="5dp"
  17. android:dashGap="3dp" />
  18. <!-- 圆角 -->
  19. <corners
  20. android:radius="2dp" />
  21. <padding
  22. android:left="10dp"
  23. android:top="10dp"
  24. android:right="10dp"
  25. android:bottom="10dp" />
  26. </shape>
  27. </item>
  28. <item android:state_focused="true" >
  29. <shape>
  30. <gradient
  31. android:startColor="#ffc2b7"
  32. android:endColor="#ffc2b7"
  33. android:angle="270" />
  34. <stroke
  35. android:width="2dp"
  36. android:color="#dcdcdc" />
  37. <corners
  38. android:radius="2dp" />
  39. <padding
  40. android:left="10dp"
  41. android:top="10dp"
  42. android:right="10dp"
  43. android:bottom="10dp" />
  44. </shape>
  45. </item>
  46. <item>
  47. <shape>
  48. <solid android:color="#ff9d77"/>
  49. <stroke
  50. android:width="2dp"
  51. android:color="#fad3cf" />
  52. <corners
  53. android:topRightRadius="5dp"
  54. android:bottomLeftRadius="5dp"
  55. android:topLeftRadius="0dp"
  56. android:bottomRightRadius="0dp"
  57. />
  58. <padding
  59. android:left="10dp"
  60. android:top="10dp"
  61. android:right="10dp"
  62. android:bottom="10dp" />
  63. </shape>
  64. </item>
  65. </selector>
复制代码 运行效果如下图:
一般状态:
2011-10-24 11:17 上传 下载附件 (11.85 KB)

获得焦点状态:
Android shape使用和属性含义_第1张图片 2011-10-24 11:17 上传 下载附件 (11.79 KB)

按下状态:
2011-10-24 11:17 上传 下载附件 (14.24 KB)

更多相关文章

  1. Android实现游戏摇杆的源代码
  2. Android状态栏黑色字体
  3. Android Alarm驱动源代码分析(Alarm.c)
  4. Android百度地图之位置定位和附近查找代码简单实现 (上)
  5. android 隐藏状态栏
  6. Android Studio中配置代码和资源的路径
  7. Android 4.4以后设置状态栏颜色
  8. Android 代码设置EditText过滤汉字
  9. Android 新浪微博代码

随机推荐

  1. 简单了解MySQL存储引擎
  2. MySQL中SQL分页查询的几种实现方法及优缺
  3. 解决Navicat导入数据库数据结构sql报错da
  4. 浅谈mysql导出表数据到excel关于datetime
  5. 阿里云centos7中安装MySQL8.0.13的方法步
  6. 快速解决mysql导出scv文件乱码、蹿行的问
  7. 快速解决mysql导数据时,格式不对、导入慢
  8. Mysql日期查询的详细介绍
  9. MySQL中进行跨库查询的方法示例
  10. android和java平台统一的DES加密解决方案