android xml實現控制元件邊框陰影漸變效果
阿新 • • 發佈:2018-12-17
實現原理:使用兩塊畫布重疊,上面畫布小於下面畫布,下面畫布漸變
<?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" />