android Shape使用(转)

在Android中常常会使用shape来定义控件的一些显示属性,那么怎么来用那,今天我们就来看一些shape的使用,大家看完这篇以后就会对shape有了大体的了解,下面的是稍作总结请大家仔细的观看:

Java代码:
Xml代码 复制代码 收藏代码
  1. <shape> 
  2.  
  3. <!-- 实心 --> 
  4.  
  5. <solid android:color="#ff9d77"/> 
  6.  
  7. <!-- 渐变 --> 
  8.  
  9. <gradient 
  10.  
  11. android:startColor="#ff8c00" 
  12.  
  13. android:endColor="#FFFFFF" 
  14.  
  15. android:angle="270" /> 
  16.  
  17.  
  18.  
  19. <!-- 描边 --> 
  20.  
  21. <stroke 
  22.  
  23. android:width="2dp" 
  24.  
  25. android:color="#dcdcdc" /> 
  26.  
  27.  
  28.  
  29. <!-- 圆角 --> 
  30.  
  31. <corners 
  32.  
  33. android:radius="2dp" /> 
  34.  
  35.  
  36.  
  37. <padding 
  38.  
  39. android:left="10dp" 
  40.  
  41. android:top="10dp" 
  42.  
  43. android:right="10dp" 
  44.  
  45. android:bottom="10dp" /> 
  46.  
  47. </shape> 

  1.       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为角的弧度,值越大角越圆。
           我们还可以把四个角设定成不同的角度,方法为:

    Xml代码 复制代码 收藏代码
    1. <corners 
    2.  
    3. android:topRightRadius="20dp" 右上角 
    4.  
    5. android:bottomLeftRadius="20dp" 右下角 
    6.  
    7. android:topLeftRadius="1dp" 左上角 
    8.  
    9. android:bottomRightRadius="0dp" 左下角 
    10.  
    11. /> 


       这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
       还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

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


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

Xml代码 复制代码 收藏代码
  1. <Button 
  2.  
  3. android:layout_width="wrap_content" 
  4.  
  5. android:layout_height="wrap_content" 
  6.  
  7. android:text="TestShapeButton" 
  8.  
  9. android:background="@drawable/button_selector" 
  10.  
  11. /> 

    复制代码


          我们来看看main.xml代码:

    Xml代码 复制代码 收藏代码
    1. <?xml version="1.0" encoding="utf-8"?> 
    2.  
    3. <selector 
    4.  
    5. xmlns:android="http://schemas.android.com/apk/res/android"> 
    6.  
    7. <item android:state_pressed="true" > 
    8.  
    9. <shape> 
    10.  
    11.  
    12.  
    13.  
    14.  
    15. <!-- 渐变 --> 
    16.  
    17. <gradient 
    18.  
    19. android:startColor="#ff8c00" 
    20.  
    21. android:endColor="#FFFFFF" 
    22.  
    23. android:type="radial" 
    24.  
    25. android:gradientRadius="50" /> 
    26.  
    27.  
    28.  
    29. <!-- 描边 --> 
    30.  
    31. <stroke 
    32.  
    33. android:width="2dp" 
    34.  
    35. android:color="#dcdcdc" 
    36.  
    37. android:dashWidth="5dp"  
    38.  
    39. android:dashGap="3dp" /> 
    40.  
    41.  
    42.  
    43. <!-- 圆角 --> 
    44.  
    45. <corners 
    46.  
    47. android:radius="2dp" /> 
    48.  
    49.  
    50.  
    51. <padding 
    52.  
    53. android:left="10dp" 
    54.  
    55. android:top="10dp" 
    56.  
    57. android:right="10dp" 
    58.  
    59. android:bottom="10dp" /> 
    60.  
    61. </shape> 
    62.  
    63.  
    64.  
    65. </item> 
    66.  
    67.  
    68.  
    69. <item android:state_focused="true" > 
    70.  
    71. <shape> 
    72.  
    73. <gradient 
    74.  
    75. android:startColor="#ffc2b7" 
    76.  
    77. android:endColor="#ffc2b7" 
    78.  
    79. android:angle="270" /> 
    80.  
    81.  
    82.  
    83.  
    84.  
    85. <stroke 
    86.  
    87. android:width="2dp" 
    88.  
    89. android:color="#dcdcdc" /> 
    90.  
    91. <corners 
    92.  
    93. android:radius="2dp" /> 
    94.  
    95.  
    96.  
    97. <padding 
    98.  
    99. android:left="10dp" 
    100.  
    101. android:top="10dp" 
    102.  
    103. android:right="10dp" 
    104.  
    105. android:bottom="10dp" /> 
    106.  
    107. </shape> 
    108.  
    109. </item> 
    110.  
    111.  
    112.  
    113.  
    114.  
    115. <item>  
    116.  
    117. <shape> 
    118.  
    119. <solid android:color="#ff9d77"/> 
    120.  
    121. <stroke 
    122.  
    123. android:width="2dp" 
    124.  
    125. android:color="#fad3cf" /> 
    126.  
    127.  
    128.  
    129. <corners  
    130.  
    131. android:topRightRadius="5dp" 
    132.  
    133. android:bottomLeftRadius="5dp" 
    134.  
    135. android:topLeftRadius="0dp" 
    136.  
    137. android:bottomRightRadius="0dp" 
    138.  
    139. /> 
    140.  
    141.  
    142.  
    143. <padding 
    144.  
    145. android:left="10dp" 
    146.  
    147. android:top="10dp" 
    148.  
    149. android:right="10dp" 
    150.  
    151. android:bottom="10dp" /> 
    152.  
    153. </shape> 
    154.  
    155. </item> 
    156.  
    157.  
    158.  
    159.  
    160.  
    161. </selector> 

    运行效果:

    1.png

    2.png

    3.png

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值