android shape的使用詳解以及常用效果(漸變色、分割線、邊框、半透明陰影效果等)

shape使用、漸變色、分割線、邊框、半透明、半透明陰影效果。

首先簡單瞭解一下shape中常見的屬性。(詳細介紹參看 api文檔


<?xml version="1.0" encoding="utf-8"?>
<shape
   
xmlns:android="http://schemas.android.com/apk/res/android"
   
android:shape=["rectangle" | "oval" | "line" | "ring"] > --- 默認爲rectangle
   
<corners -- shape=“rectangle”時使用,
       
android:radius="integer" -- 半徑,會被下邊的屬性覆蓋,默認爲1dp,
       
android:topLeftRadius="integer"
       
android:topRightRadius="integer"
       
android:bottomLeftRadius="integer"
       
android:bottomRightRadius="integer" />
   
<gradient -- 漸變
       
android:angle="integer"
       
android:centerX="integer"
       
android:centerY="integer"
       
android:centerColor="integer"
       
android:endColor="color"
       
android:gradientRadius="integer"
       
android:startColor="color"
       
android:type=["linear" | "radial" | "sweep"]
       
android:useLevel=["true" | "false"] />
   
<padding
       
android:left="integer"
       
android:top="integer"
       
android:right="integer"
       
android:bottom="integer" />
   
<size -- 指定大小,一般用在imageview配合scaleType屬性使用。大小一般會適配滴
       
android:width="integer"
       
android:height="integer" />
   
<solid -- 填充顏色,可是是十六進制顏色。(比如想設置半透明效果,直接使用十六就只就OK)
       
android:color="color" />
   
<stroke -- 指定邊框,border,dashWidth和dashGap有一個爲0dp則爲
       
android:width="integer"
       
android:color="color"
       
android:dashWidth="integer" -- 虛線寬度
       
android:dashGap="integer" /> -- 虛線間隔寬度
</shape>

注意:
<corners>
1、android:radius,半徑,會被下邊的單個角度半徑屬性覆蓋,默認爲1dp,
2、在使用時,如果單獨設置四個角度,又大小不一致時,eclipse的graphics preview會報錯。但是直接真機運行即可。(比如實線上邊直角,下邊屈角的效果)

<size>
Note: The shape scales to the size of the container View proportionate to the dimensions defined here, by default. When you use the shape in an ImageView, you can restrict scaling by setting the android:scaleType to "center"

舉個栗子:
1、漸變色
 res/drawable/gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   
android:shape="rectangle">
   
<gradient
       
android:startColor="#FFFF0000"
       
android:endColor="#80FF00FF"
       
android:angle="45"/>
   
<padding android:left="7dp"
       
android:top="7dp"
       
android:right="7dp"
       
android:bottom="7dp" />
   
<corners android:radius="8dp" />
</shape>
如圖:




2、白色邊框、半透明效果

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:shape="rectangle" >  
  4.     <corners android:radius="16dp" />  
  5.     <!-- 這是半透明,還可以設置全透明,那就是白色邊框的效果了 -->  
  6.     <solid android:color="#80065e8d" />  
  7.     <stroke  
  8.         android:dashGap="0dp"  
  9.         android:width="4dp"  
  10.         android:color="@android:color/white" />  
  11. </shape>  

如圖:
   

3、分割線效果:

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:shape="line" >  
  4.     <stroke  
  5.         android:width="4dp"  
  6.         android:color="@android:color/black" />  
  7. </shape>  


如果:


4、單邊屈角效果
[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.     <corners   
  5.         android:topLeftRadius="5dp"  
  6.         android:topRightRadius="5dp"  
  7.         android:bottomLeftRadius="30dp"  
  8.         android:bottomRightRadius="30dp"/>  
  9.   
  10.     <!-- 這是半透明,還可以設置全透明,那就是白色邊框的效果了 -->  
  11.     <solid android:color="#ff065e8d" />  
  12.   
  13.     <stroke  
  14.         android:dashGap="0dp"  
  15.         android:width="4dp"  
  16.         android:color="@android:color/white" />  
  17.   
  18. </shape>  

如圖:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章