1. 程式人生 > >android xml實現控制元件邊框陰影漸變效果

android xml實現控制元件邊框陰影漸變效果

實現原理:使用兩塊畫布重疊,上面畫布小於下面畫布,下面畫布漸變

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--陰影-->
    <item
        android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp"
        >
        <shape android:shape="rectangle">
            <gradient
                android:angle="270"
                android:endColor="#f5f5f5"
                android:startColor="#ffffff"/>

            <corners
                android:bottomLeftRadius="2dp"
                android:bottomRightRadius="2dp"
                android:topLeftRadius="2dp"
                android:topRightRadius="2dp"/>
        </shape>
    </item>
    <!--陰影-->

    <!--白色背景-->
    <item
        android:left="3dp"
        android:top="3dp"
        android:bottom="5dp"
        android:right="3dp">

        <shape android:shape="rectangle">
            <gradient
                android:angle="270"
                android:endColor="#FFFFFF"
                android:startColor="#FFFFFF"/>

            <corners
                android:bottomLeftRadius="2dp"
                android:bottomRightRadius="2dp"
                android:topLeftRadius="2dp"
                android:topRightRadius="2dp"/>
        </shape>
    </item>

</layer-list>

  • shape 的屬性 (rectangle:矩形;line:線性;oval:橢圓;ring:環形),預設為矩形

  • corners 邊角弧度 必須是在shape=rectangle的時候,corners才有效

  • solid 用以指定內部填充色

  • gradient //定義漸變色,可以定義兩色漸變和三色漸變,及漸變樣式

       linear(線性漸變)、radial(放射性漸變)、sweep(掃描式漸變), 在構造放射性漸變時,要加上android:gradientRadius屬性(漸變半徑),即必須指定漸變半徑的大小才會起作用。
      
       <gradient      
             android:type=["linear" | "radial" | "sweep"]    //共有3中漸變型別   
    
             android:angle="integer"     //漸變角度,必須為45的倍數,0為從左到右,90為從上到下    
    
             android:centerX="float"     //漸變中心X的相當位置,範圍為0~1      
    
             android:centerY="float"     //漸變中心Y的相當位置,範圍為0~1     
    
             android:startColor="color"   //漸變開始點的顏色     
    
             android:centerColor="color"  //漸變中間點的顏色,在開始與結束點之間    
    
             android:endColor="color"    //漸變結束點的顏色     
    
             android:gradientRadius="float"  //漸變的半徑,只有當漸變型別為radial時才有效     
    
  • stroke 這是描邊屬性,可以定義描邊的寬度,顏色,虛實線等

    <stroke 
              android:width="dimension"   //描邊的寬度      
    
              android:color="color"   //描邊的顏色    // 以下兩個屬性設定虛線    
    
              android:dashWidth="dimension"   //虛線的寬度,值為0時是實線   
    
              android:dashGap="dimension" />