Android shape檔案屬性詳解

來源:互聯網
上載者:User

標籤:android   shape   gradient   自訂形狀   

Android開發中難免用到自訂的資源檔,其中很重要的便是Shape檔案,Shape檔案可以用來定義任意形狀,常常用來做背景色等。

Shape檔案實際上也是.xml,其根項目是shape。下面將詳細介紹Shape檔案中各種元素和屬性的含義。


根項目<shape>指定基本形狀

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

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

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

僅當形狀定義為ring時,下列屬性才可用:

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

  • innerRadiusRatio為浮點型,以環的寬度比率來表示內環的半徑,例如,如果android:innerRadiusRatio,表示內環半徑等於環的寬度除以5,這個值是可以被覆蓋的,預設為9.

  •         thickness指定環的厚度,類型為Dimension。

  •         thicknessRatio也為浮點型,以環的寬度比率來表示環的厚度,例如,如果該值為"2",那麼環的厚度就等於環的寬度除以2。這個值是可以被android:thickness覆蓋的,預設值是3.

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


<gradient>設定漸層填充

    startcolor、centercolor、endcolor設定漸層的起止色,即允許設定兩次漸層。

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

    type設定漸層類型,預設是linear(線性漸層),如果設定為radial(放射/放射狀漸層),則必須同時設定gradientRadius屬性,該屬性指定漸層半徑,注意:這個半徑並不是Dimension,不接受dp等單位,只能設定數字。此外還可以設定一個比較有意思的方式:sweep(掃描漸層)。三種漸層方式的效果見。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/80/wKiom1QJIVHASvNvAABJYJEczmQ405.jpg" style="width:120px;height:35px;" title="linear" width="120" height="35" border="0" hspace="0" vspace="0" alt="wKiom1QJIVHASvNvAABJYJEczmQ405.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/82/wKioL1QJIVejpiYMAAA9uJm6FyI858.jpg" style="width:120px;height:35px;" title="radial" width="120" height="35" border="0" hspace="0" vspace="0" alt="wKioL1QJIVejpiYMAAA9uJm6FyI858.jpg" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/80/wKiom1QJIVLwonO6AABGUVLu89w952.jpg" style="width:120px;height:34px;" title="sweep" width="120" height="34" border="0" hspace="0" vspace="0" alt="wKiom1QJIVLwonO6AABGUVLu89w952.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,還要多寫多用才行。如有描述錯誤或不妥的地方,歡迎各位批評指正。

本文出自 “飛翔的貓咪” 部落格,請務必保留此出處http://flyingcat2013.blog.51cto.com/7061638/1549077

Android shape檔案屬性詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.