天天看点

android中通过自定义xml实现shape效果 的属性配置

在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片,然后在写一个selector的xml文件放在drawable文件夹中,但是 这样drawable中的内容就非常多,就容易使apk变大。

那么自定义图形shape就可解决这一问题, Android上自定义图形shape支持以下几种属性gradient、stroke、corners、padding、 solid等。

  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 分别为起始和结束颜色

android: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 为角的弧度,值越大角越圆。