前些天去参加了一个公开课,说到了我们很多程序对美工比较不在行,所以需要与UI工程师合作,但是有时候UI工程师忙其他的什么,我们既不会PS也不会AI。于是乎在android中我们可以通过shape来定制我们需要的图形效果等。

    下午研究了下shape,众所周知shape是形状的意思。网络上的例子太多看的真让人眼花缭乱,自己总结了下,以如何使用shape来做圆角按钮的背景来说明shape的具体使用吧。

   看下效果图

    

   具体实现代码:

  

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
  3.      <!-- 填充 --> 
  4.     <solid  
  5.         android:color="#B2B2B2"  
  6.         /> 
  7.     
  8.     <!-- 大小 --> 
  9.     <size 
  10.         android:width="200dp" 
  11.         android:height="50dp" 
  12.         />  
  13.  
  14.      <!-- 渐变色 --> 
  15.     <gradient  
  16.         android:startColor="#DBDCDD" 
  17.         android:endColor="#B8B9BB" 
  18.         android:centerColor="#ADADAF" 
  19.         android:angle="270"   
  20.         /> 
  21.   
  22.      
  23.     <!-- 描边 --> 
  24.     <stroke  
  25.         android:width="2dp" 
  26.         android:color="#3D4148"   
  27.         />  
  28.          
  29.     <!-- 圆角 --> 
  30.     <corners   
  31.        android:radius="5dp"   
  32.         /> 
  33.   
  34.     <padding  
  35.         android:left="10dp" 
  36.         android:top="10dp" 
  37.         android:right="10dp" 
  38.         android:bottom="10dp" 
  39.         /> 
  40.  
  41. </shape> 
  42.  
  43. <!--  
  44.  
  45. 1、  solid  
  46.      描述:内部填充 
  47.       属性     android:color 填充颜色 
  48.  
  49.  
  50. 2、size  
  51.      描述:size: 大小 
  52.      属性: 
  53.      android:width   表示形状的宽度 
  54.      android:height 表示形状的高度 
  55.  
  56. 3、gradient 
  57.       
  58.       描述: 渐变色 
  59.     
  60.        属性: 
  61.        android:startColor  起始颜色 
  62.        android:endColor    结束颜色 
  63.        android:angle       渐变角度(PS:当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍) 
  64.        android:type       渐变类型(取值:linear、radial、sweep) 
  65.                             linear  线性渐变,这是默认设置 
  66.                             radial  放射性渐变,以开始色为中心。 
  67.                             sweep   扫描线式的渐变。 
  68.        android:centerColor  渐变中间颜色,即开始颜色与结束颜色之间的颜色 
  69.        android:useLevel   如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色 
  70.        android:gradientRadius  渐变色半径.当 android:type="radial" 时才使用。单独使用 android:type="radial"会报错。 
  71.        android:centerX    渐变中心X点坐标的相对位置 
  72.        android:centerY   渐变中心Y点坐标的相对位置 
  73. 4、stroke 
  74.  
  75.     描述: stroke:描边  相当于html中的盒子模型的border 
  76.          
  77.    属性: 
  78.         android:width 描边的宽度 
  79.         android:color 描边的颜色 
  80.         android:dashWidth 表示描边的样式是虚线的宽度, 
  81.                                                              值为0时,表示为实线。值大于0则为虚线。 
  82.         android:dashGap  表示描边为虚线时,虚线之间的间隔 即“ - - - - ” 
  83.          
  84.  5、corners 
  85.   
  86.          描述: corners: 圆角 
  87.       
  88.         属性: 
  89.         android:radius  半径 
  90.         android:topLeftRadius  左上角半径 
  91.         android:topRightRadius  右上角半径 
  92.         注意一下两个属性比较不同: 
  93.         android:bottomLeftRadius 右下角半径 
  94.         android:bottomRightRadius 左下角半径 
  95.  6、padding 
  96.            
  97.           描述:内部边距,即内容与边的距离 
  98.            
  99.          属性: 
  100.         android:left  左内边距 
  101.         android:top   上内边距 
  102.         android:right  右内边距 
  103.         android:bottom 下内边距 
  104.  --> 

     源码下载