android關於shape的gradient屬性詳解
阿新 • • 發佈:2019-02-13
安卓剛入門,接觸專案過程中用到了drawable中的shape,看文件過程中gradient屬性不是很理解。本著站在巨人肩膀上學習的態度,上網找資料。估計開啟方式不對,找到資料甚少,只能自己動手,當做筆記,有錯請指正,謝謝~
首先文件介紹:<gradientandroid: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"] />
<gradient>
shape的顏色漸變屬性attributes:
-
android:angle
- Integer,代表漸變顏色的角度, 0 is left to right, 90 is bottom to top. 必須是45的整數倍.
- 預設是 0.該屬性只有在type=linear情況下起作用,預設的type為linear。
預設情況下,從左到右:
- xml程式碼:<gradient
android:startColor="#000000"
android:endColor="#ffffff"
/>
angle=270,從上到下 :
- xml程式碼:<gradient
android:startColor="#000000"
android:endColor="#ffffff"
android:angle="270"
/> -
android:startColor
- Color. 顏色漸變的開始顏色,如angle=270中的 android:startColor="#000000"
-
android:endColor
- Color. 顏色漸變的結束顏色,如angle=270中的 android:endColor="#ffffff"
-
android:centerColor
- Color. 顏色漸變的中間顏色,主要用於多彩。
-
-
<gradient
android:startColor="#000000"
android:endColor="#ffffff"
android:centerColor="#ff0000"
/> -
android:centerX
- Float.(0 - 1.0) 相對X的漸變位置。
-
android:centerY
- Float.(0 - 1.0) 相對Y的漸變位置。
- 這兩個屬性只有在type不為linear情況下起作用。
-
android:gradientRadius
-
Float. 漸變顏色的半徑,單位應該是畫素點. 需要
android:type="radial"
. - 如果android:type="radial",沒有設定android:gradientRadius,將會報錯,error inflating class.
-
- xml程式碼:
-
<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.5"
android:centerY="0.5"
android:gradientRadius="30"
android:type="radial"
/>
加入android:centerColor屬性
<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerColor="#000000"
android:centerX="0.5"
android:centerY="0.5"
android:gradientRadius="30"
android:type="radial"
/>
android:type
Value | Description |
---|---|
"linear" |
線性漸變.可以理解為 y=kx+b. |
"radial" |
A radial gradient.圓形漸變,起始顏色從cenralX,centralY點開始。 |
"sweep" |
A sweeping line gradient. |
centerX="0.2" centerX="0.2"
xml程式碼: <gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.2"
android:centerX="0.2"
android:gradientRadius="30"
android:type="radial"
/> type="sweep":
xml程式碼:
<gradientandroid:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.5"
android:centerY="0.5"
android:type="sweep"
/>