Android自定义Shape 加上阴影shadow之方法


Android支持自定义Shape, 以画出需要的形状,可以作为TextView, EditText, Button的背景drawable资源。Shape很简单,就是一个XML文件,SDK文档里描述其格式如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:shape=["rectangle" | "oval" | "line" | "ring"] >  
  5.     <corners  
  6.         android:radius="integer"  
  7.         android:topLeftRadius="integer"  
  8.         android:topRightRadius="integer"  
  9.         android:bottomLeftRadius="integer"  
  10.         android:bottomRightRadius="integer" />  
  11.     <gradient  
  12.         android:angle="integer"  
  13.         android:centerX="integer"  
  14.         android:centerY="integer"  
  15.         android:centerColor="integer"  
  16.         android:endColor="color"  
  17.         android:gradientRadius="integer"  
  18.         android:startColor="color"  
  19.         android:type=["linear" | "radial" | "sweep"]   
  20.         android:usesLevel=["true" | "false"] />  
  21.     <padding  
  22.         android:left="integer"  
  23.         android:top="integer"  
  24.         android:right="integer"  
  25.         android:bottom="integer" />  
  26.     <size  
  27.         android:width="integer"  
  28.         android:height="integer" />  
  29.     <solid  
  30.         android:color="color" />  
  31.     <stroke  
  32.         android:width="integer"  
  33.         android:color="color"  
  34.         android:dashWidth="integer"  
  35.         android:dashGap="integer" />  
  36. </shape>  

其支持的属性没有shadow, 做Web前端开发的同学写CSS可以很方便地加一个shadow属性值,如何给Android Shape加一个shadow,以得到类似的效果呢?

答案是使用layer-list !   直接上代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.     <item>  
  5.         <shape android:shape="rectangle">  
  6.             <solid android:color="#792a03" />  
  7.             <corners android:radius="19dp" />  
  8.         </shape>  
  9.     </item>  
  10.        
  11.     <item  android:top="1px">  
  12.         <shape android:shape="rectangle">  
  13.             <gradient android:startColor="#ffdb8f" android:endColor="#ffdb8f"  
  14.                 android:angle="270" />  
  15.             <padding android:left="5dp" android:top="3dp" android:right="5dp"  
  16.                 android:bottom="3dp" />  
  17.             <corners android:radius="20dp" />  
  18.         </shape>  
  19.   
  20.     </item>  
  21.   
  22.  </layer-list>  

将以上xml存成btn_test, 放到res/drawable/目录下。 将该drawable xml设为一个TextView的backgroiund,

  1. <TextView  
  2.        android:background="@drawable/btn_test"  
  3.   
  4.         android:layout_marginTop="20dip"  
  5.         android:layout_marginLeft="5dip"  
  6.     android:textColor="#792a03"            
  7.            
  8.         android:text="1天2小时14分20秒"  
  9.        android:layout_width="wrap_content"    
  10.        android:layout_height="wrap_content" />  
  • 1
  • 2
  • 下一页

相关内容