Android shape文件屬性詳解

Android開發中不免用到自定義的資源文件,其中很重要的即是Shape文件,Shape文件能夠用來定義任意形狀,經常用來作背景色等。android

Shape文件實際上也是.xml,其根元素是shape。下面將詳細介紹Shape文件中各類元素和屬性的含義。ide


根元素<shape>指定基本形狀spa

shape屬性指定基本形狀,容許的值有:rectangle(矩形),oval(橢圓),line(線條), ring(環)。默認的值是矩形,下面的代碼定義了一個矩形:3d

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
    xmlns:android="http://schemas.android.com/apk/res/android" >
</shape>

visible屬性設置形狀是否初始可見。xml

僅當形狀定義爲ring時,下列屬性纔可用:blog

  • innerRadius指定內環(即中空的洞)的半徑,接收Dimension類型。utf-8

  • innerRadiusRatio爲浮點型,以環的寬度比率來表示內環的半徑,例如,若是android:innerRadiusRatio,表示內環半徑等於環的寬度除以5,這個值是能夠被覆蓋的,默認爲9.資源

  •         thickness指定環的厚度,類型爲Dimension。開發

  •         thickne***atio也爲浮點型,以環的寬度比率來表示環的厚度,例如,若是該值爲"2",那麼環的厚度就等於環的寬度除以2。這個值是能夠被android:thickness覆蓋的,默認值是3.get

  • 關於useLevel請參加下節<gradient>。


<gradient>設置漸變填充

    startcolor、centercolor、endcolor設置漸變的起止色,即容許設置兩次漸變。

    angle設置漸變的角度,僅當漸變類型爲線性漸變時有效。默認0值爲水平向右,其餘角度以逆時針旋轉爲準,例如設置爲90則是自下而上,設置爲270自上而下,以此類推。注意:必須是45的倍數。

    type設置漸變類型,默認是linear(線性漸變),若是設置爲radial(放射/徑向漸變),則必須同時設置gradientRadius屬性,該屬性指定漸變半徑,注意:這個半徑並非Dimension,不接受dp等單位,只能設置數字。此外還能夠設置一個比較有意思的方式:sweep(掃描漸變)。三種漸變方式的效果見下圖。

wKiom1QJIVHASvNvAABJYJEczmQ405.jpgwKioL1QJIVejpiYMAAA9uJm6FyI858.jpgwKiom1QJIVLwonO6AABGUVLu89w952.jpg

  centerX、centerY兩個屬性用於設置漸變的中心點位置,僅當漸變類型爲放射漸變時有效,類型爲分數或小數,不接受Dimension。默認值是0.5,有效值是0.0~1.0,超出該範圍後會看不出漸變效果。

  useLevel屬性一般不使用。該屬性用於指定是否將該shape當成一個LevelListDrawable來使用,默認值爲false。

下面的代碼定義了一個線性的上下漸變:

<gradient android:startColor="#67CC24" android:endColor="#3E9010" android:angle="270" />


<solid>設置純色填充

這個元素自己沒什麼好說的,既然是純色填充,只有color一個屬性。

注意:若是同一份文件同時指定漸變和純色填充,則順序在後面的會覆蓋掉前面的設置!


<size>指定尺寸

使用width、height分別設置寬高,類型爲Dimension。

注意:Shape文件即便指定了size,默認狀況下在使用時也會縮放到其容器的大小。若是在ImageView中使用,可使用android:scaleType進行縮放的限制。


<stroke>描邊

當定義的形狀爲line(線條)時,該屬性爲必選項,設置線條的樣式。當形狀爲其餘形狀時,該元素起描邊的做用。

width指定邊框的寬度(Dimension),color指定邊框顏色,只接受color類型。

咱們還能夠設置虛線邊框:使用dashGap設置虛線之間的間隔,dashWidth設置每根虛線'-'的長度(爲何Google不把這個叫作Length?我也不知道)。僅當這兩個屬性都設置時虛線效果才生效

下面的代碼定義了一個藍色虛線邊框:

    <stroke android:color="#0000FF" android:width="5dp" 
        android:dashGap="3dp" android:dashWidth="10dp"/>


<corners>設置圓角

僅當形狀爲矩形時該元素才生效。topLeftRadius、topRightRadius、bottomLeftRadius、bottomRightRadius四個屬性分別設置四個角,radius則統一設置(四個角相同)。下面的代碼設置了四個相同的圓角:

    <corners android:radius="10dp"/>


<padding>設置邊距

該元素的含義請參照android:layout_paddingLeft等屬性。共有四個方向left、right、top、bottom能夠設置,但沒有提供統一設置的屬性。


以上介紹了Shape文件的全部可用元素和屬性,但要真正用好shape,還要多寫多用才行。若有描述錯誤或不妥的地方,歡迎各位批評指正。

相關文章
相關標籤/搜索