shape基本用法及全部属性定义

如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造。当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape、gradient、stroke、corners等。

我们就以目前系统的Button的selector为例说下:
Xml代码 收藏代码
  1. <shape>
  2. <gradient
  3. android:startColor="#ff8c00"
  4. android:endColor="#FFFFFF"
  5. android:angle="270"/>
  6. <stroke
  7. android:width="2dp"
  8. android:color="#dcdcdc"/>
  9. <solidandroid:color="#ff9d77"/>
  10. <corners
  11. android:radius="2dp"/>
  12. <padding
  13. android:left="10dp"
  14. android:top="10dp"
  15. android:right="10dp"
  16. android:bottom="10dp"/>
  17. </shape>

对于上面,这条shape的定义,分别为渐变,在gradient中startColor属性为开始的颜色,endColor为渐变结束的颜色,下面的 angle是角度。接下来是stroke可以理解为边缘,corners为拐角这里radius属性为半径,最后是相对位置属性padding。

对于一个Button完整的定义可以为
Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selector
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <itemandroid:state_pressed="true">
  5. <shape>
  6. <gradient
  7. android:startColor="#ff8c00"
  8. android:endColor="#FFFFFF"
  9. android:angle="270"/>
  10. <stroke
  11. android:width="2dp"
  12. android:color="#dcdcdc"/>
  13. <corners
  14. android:radius="2dp"/>
  15. <padding
  16. android:left="10dp"
  17. android:top="10dp"
  18. android:right="10dp"
  19. android:bottom="10dp"/>
  20. </shape>
  21. </item>
  22. <itemandroid:state_focused="true">
  23. <shape>
  24. <gradient
  25. android:startColor="#ffc2b7"
  26. android:endColor="#ffc2b7"
  27. android:angle="270"/>
  28. <stroke
  29. android:width="2dp"
  30. android:color="#dcdcdc"/>
  31. <corners
  32. android:radius="2dp"/>
  33. <padding
  34. android:left="10dp"
  35. android:top="10dp"
  36. android:right="10dp"
  37. android:bottom="10dp"/>
  38. </shape>
  39. </item>
  40. <item>
  41. <shape>
  42. <gradient
  43. android:startColor="#ff9d77"
  44. android:endColor="#ff9d77"
  45. android:angle="270"/>
  46. <stroke
  47. android:width="2dp"
  48. android:color="#fad3cf"/>
  49. <corners
  50. android:radius="2dp"/>
  51. <padding
  52. android:left="10dp"
  53. android:top="10dp"
  54. android:right="10dp"
  55. android:bottom="10dp"/>
  56. </shape>
  57. </item>
  58. </selector>

注意Android123提示大家,以上几个item的区别主要是体现在state_pressed按下或state_focused获得焦点时,当当来判断显示什么类型,而没有state_xxx属性的item可以看作是常规状态下。

附shape全部属性定义:
Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <shapexmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape=["rectangle"|"oval"|"line"|"ring"]>
  4. <gradient
  5. android:angle="integer"
  6. android:centerX="integer"
  7. android:centerY="integer"
  8. android:centerColor="integer"
  9. android:endColor="color"
  10. android:gradientRadius="integer"
  11. android:startColor="color"
  12. android:type=["linear"|"radial"|"sweep"]
  13. android:usesLevel=["true"|"false"]/>
  14. <solid
  15. android:color="color"/>
  16. <stroke
  17. android:width="integer"
  18. android:color="color"
  19. android:dashWidth="integer"<!--点划线-->
  20. android:dashGap="integer"/>
  21. <padding
  22. android:left="integer"
  23. android:top="integer"
  24. android:right="integer"
  25. android:bottom="integer"/>
  26. <corners
  27. android:radius="integer"
  28. android:topLeftRadius="integer"
  29. android:topRightRadius="integer"
  30. android:bottomLeftRadius="integer"
  31. android:bottomRightRadius="integer"/>
  32. </shape>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值