Android提供的控件外觀實在不怎麼好看,比如一個Button,一個EditText。那麼我們可以自定義這些控件的背景來達到美觀的效果。
常用的方法就是利用shape,shape聽起來是用來改變形狀的,它不但可以改變形狀,還可以改變好多東西。
下面就開始寫一個shape文件吧
我們右擊drawable選擇new一個Drawable resource file,我們會看到它第二行默認爲select,我們改成shape,寫好名字後點確定,這樣就完成了一個shape文件的創建,我們打開這個文件可以看到文件裏面只有shape一個根標籤。我們會陸續往裏面添加其他標籤。
這裏先提到shape標籤的一個屬性:
android:shape=”“
這個屬性可以設置控件的形狀,他有四個取值:
line 線形
oval 圓形
rectandle 矩形
ring 環形
這個屬性也可以不設置,不設置就會是默認形狀
接下來介紹shape標籤裏面可以放置的子標籤
當android:shape=”rectangle”或默認形狀時有5個子標籤可用:
solid 設置填充顏色
padding 設置內容與邊界的內邊距
gradient 設置漸變顏色
corners 設置圓角
stroke 設置邊框
- solid 設置填充色 該標籤只有一個屬性
- android:color 設置顏色
- padding 設置內容與邊界的內邊距,可分別設置左右上下距離,有四個屬性
- android:left 左邊距
- android:right 右邊距
- android:top 上邊距
- android:bottom 下邊距
- gradient 設置漸變顏色,這個標籤屬性比較多
- android:type 設置漸變類型
取值有如下三個
line 線性漸變
radial 放射性漸變
sweep 掃描漸變 - android:startColor 設置漸變開始的顏色
- android:endColor 設置漸變結束的顏色
- android:centerColor 設置漸變中間的顏色
- android:angle 漸變的角度,線性漸變時纔有效,必須是45的倍數,0表示從左到右,90表示從下到上
- android:centerX 漸變中心的相對X座標,放射漸變時纔有效,在0.0到1.0之間,默認爲0.5,表示在正中間
- android:centerY 漸變中心的相對X座標,放射漸變時纔有效,在0.0到1.0之間,默認爲0.5,表示在正中間
- android:gradientRadius 漸變的半徑,只有漸變類型爲radial時才使用
- android:useLevel 如果爲true,則可在LevelListDrawable中使用
- android:type 設置漸變類型
- corners 設置圓角,可用屬性有5個
- android:radius 圓角半徑,會被下面每個特定的圓角屬性重寫
- android:topLeftRadius 左上角的半徑
- android:topRightRadius 右上角的半徑
- android:bottomLeftRadius 左下角的半徑
- android:bottomRightRadius 右下角的半徑
- stroke 設置邊框,有4個可用屬性
- android:color 描邊的顏色
- android:width 描邊的寬度
- android:dashWidth 設置虛線時的橫線長度
- android:dashGap 設置虛線時的橫線之間的距離
當android:shape=”oval”時有5個子標籤可用:
solid 設置填充顏色
padding 設置內容與邊界的內邊距
gradient 設置漸變顏色
stroke 設置邊框
size 設置形狀大小
這裏新出來了一個標籤:
size 設置形狀大小,有兩個屬性可用
* android:width 設置寬度
* android:height 設置高度
當android:shape=”line”時有2個子標籤可用:
stroke 設置邊框
size 設置形狀大小
當android:shape=”ring”時就不止有子標籤可以用了,還有一些shape根標籤的屬性可以用,我們先看看這些屬性:
- android:innerRadius 內環的半徑
- android:innerRadiusRatio 浮點型,以環的寬度比率來表示內環的半徑,默認爲3,表示內環半徑爲環的寬度除以3,該值會被android:innerRadius覆蓋
- android:thickness 環的厚度
- android:thicknessRatio 浮點型,以環的寬度比率來表示環的厚度,默認爲9,表示環的厚度爲環的寬度除以9,該值會被android:thickness覆蓋
- android:useLevel 一般爲false,否則可能環形無法顯示,只有作爲LevelListDrawable使用時才設爲true
可用子標籤:
solid 設置填充顏色
gradient 設置漸變顏色
stroke 設置邊框
好了,這些就是我知道的shpae的用法了,以後學到更多的時候還會過來更新~