Android中XML繪圖

在開發當中一直秉承:能用xml繪製的圖片效果,就一定用xml來繪製。

因爲xml繪製的所佔文件大小比圖片小很多,一般都小於1K。

從shape,layer-list 2種方式來做整理。
shape:
shape有4種屬性,分別描述4種不同的圖形:ovale(圓) line:(線) rectangle:(矩形) ring: (環形)
默認爲rectangle。

子標籤中有gradient、corners、padding、size、solid、stroke;來對圖形進行樣式描述。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle / ovale / ring/ line">
    <corners  //角半徑 shape = "rectangle" 有用
        android:radius="integer"
        android:topRightRadius="integer"
        android:topLeftRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer"
    />
    <gradient //顏色漸變
        android:type="linear / radial / sweep" //漸變類型
        android:startColor="color"     //漸變開始點的顏色    
        android:centerColor="color"    //漸變中間點的顏色,在開始與結束點之間    
        android:endColor="color"       //漸變結束點的顏色 
        android:angle="integer"        //漸變角度,必須爲45的倍數,0爲從左到右,90爲從上到下 
        android:gradientRadius="float" //漸變的半徑,只有當漸變類型爲radial時才能使用
        android:centerX="float"      //漸變中心X的相當位置,範圍爲0~1,從左到右,默認0.5
        android:centerY="float"      //漸變中心Y的相當位置,範圍爲0~1,從上到下,默認0.5
        android:useLevel="boolean"  //使用LevelListDrawable時就要設置爲true。設爲false時纔有漸變效
    />
    //type = linear時,angle屬性纔有效;type=radial時,gradientRadius屬性必須設置;type = sweep時,       centerX和centerY屬性纔有效
    <solid   //填充顏色
        android:color = "color"/>
    <stroke  //邊框描述
        android:color = "color"
        android:width  = "integer"
        //邊框虛線
        android:dashWidth="integer"    //每節虛線的長度
        android:dashGap="integer"          //每節虛線直接的間隙寬度
    />
    <padding  //內邊距
        android:left = "integer"
        android:top = "integer"
        android:right = "integer"
        android:bottom = "integer"/>
    <size     //圖片大小
        android:width= "integer"
        android:height= "integer"/>
</shape>

其中,< corners />子標籤,用來描述圖形4個角的半徑,只有shape = “rectangle”即矩形是纔有用。當shape = “ring” 環形時,設置下面屬性

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadius="integer"  //內環半徑
    android:thickness="integer"    //環的寬度
    android:useLevel="false" //boolean值,false值時,才能看見效果。
    android:innerRadiusRatio="float"   //浮點型,以環的寬度比例來表示內環的半徑。默認是9,就是環的寬度乘以9再除以2就是內環半徑的長度
    android:thicknessRatio = "float"      浮點型,以環的寬度比率來表示環的厚度。>
    </shape>

< gradient/>漸變時
type = linear時,angle屬性纔有效;當類型type爲radial時,gradientRadius屬性必須設置;當類型type爲sweep時,centerX和centerY屬性纔有效
layer-list:
圖層列表,多個item,先後順序,依次層疊,實現圖層效果。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/circle"/>
    <item android:drawable="@drawable/btn_border"/>
</layer-list>

不足之處,多多包涵。

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