1. 程式人生 > >android關於shape的gradient屬性詳解

android關於shape的gradient屬性詳解

安卓剛入門,接觸專案過程中用到了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程式碼:

 <gradient 
        android:startColor="#ff0000"
        android:endColor="#ffffff"
        android:centerX="0.5"
        android:centerY="0.5"
        android:type="sweep"
        />