當(dāng)你感覺為時已晚的時候炫七,恰恰就是最早的時候。
首先說明android的樣式主要通過shape命锄、selector堰乔、layer-list、level-list脐恩、style镐侯、theme等組合實現(xiàn)。而shape是android中最基礎(chǔ)的形狀定義工具被盈。
一般用shape定義的xml文件存放在drawable目錄下析孽,若項目沒有該目錄則新建一個,而不要將它放到drawable-hdpi等目錄中只怎。
使用shape可以自定義形狀袜瞬,可以定義下面四種類型的形狀,通過android:shape屬性指定:
? ? ? ? ? ? ? rectangle: 矩形身堡,默認(rèn)的形狀邓尤,可以畫出直角矩形、圓角矩形贴谎、弧形等汞扎;
? ? ? ? ? ? ? oval: 橢圓形,用得比較多的是畫正圓擅这;
? ? ? ? ? ? ? line: 線形澈魄,可以畫實線和虛線;
? ? ? ? ? ? ? ring: 環(huán)形仲翎,可以畫環(huán)形進度條痹扇;
rectangle(默認(rèn))
當(dāng)我們沒有聲明shape類型的時候,默認(rèn)為rectangle溯香。
rectangle的參數(shù)如下:
solid: 設(shè)置形狀填充的顏色鲫构,只有android:color一個屬性
? ? ? ? ? ? ? android:color填充的顏色
padding: 設(shè)置內(nèi)容與形狀邊界的內(nèi)間距,可分別設(shè)置左右上下的距離
? ? ? ? ? ? ? ? android:left左內(nèi)間距
? ? ? ? ? ? ? ? android:right右內(nèi)間距
? ? ? ? ? ? ? ? ?android:top上內(nèi)間距
? ? ? ? ? ? ? ? ?android:bottom下內(nèi)間距
gradient: 設(shè)置形狀的漸變顏色玫坛,可以是線性漸變结笨、輻射漸變、掃描性漸變
? ? ? ? ? ? ? ?android:type漸變的類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? linear線性漸變,默認(rèn)的漸變類型
? ? ? ? ? ? ? ? ? ? ? ? ? ? radial放射漸變炕吸,設(shè)置該項時伐憾,android:gradientRadius也必須設(shè)置
? ? ? ? ? ? ? ? ? ? ? ? ? ? sweep掃描性漸變
? ? ? ? ? ? ? android:startColor漸變開始的顏色
? ? ? ? ? ? ? android:endColor漸變結(jié)束的顏色
? ? ? ? ? ? ? android:centerColor漸變中間的顏色
? ? ? ? ? ? ? android:angle漸變的角度,線性漸變時才有效算途,必須是45的倍數(shù)塞耕,0表示從左到右,90表示從下到上
? ? ? ? ? ? ? android:centerX漸變中心的相對X坐標(biāo)嘴瓤,放射漸變時才有效扫外,在0.0到1.0之間,默認(rèn)為0.5廓脆,表示在正中間
? ? ? ? ? ? ? android:centerY漸變中心的相對X坐標(biāo)筛谚,放射漸變時才有效,在0.0到1.0之間停忿,默認(rèn)為0.5驾讲,表示在正中間
? ? ? ? ? ? ? android:gradientRadius漸變的半徑,只有漸變類型為radial時才使用
? ? ? ? ? ? ? android:useLevel如果為true席赂,則可在LevelListDrawable中使用
corners: 設(shè)置圓角吮铭,只適用于rectangle類型,可分別設(shè)置四個角不同半徑的圓角颅停,當(dāng)設(shè)置的圓角半徑很大時谓晌,比如200dp,就可變成弧形邊了
? ? ? ? ? ? ? android:radius圓角半徑癞揉,會被下面每個特定的圓角屬性重寫
? ? ? ? ? ? ? android:topLeftRadius左上角的半徑
? ? ? ? ? ? ? android:topRightRadius右上角的半徑
? ? ? ? ? ? ? android:bottomLeftRadius左下角的半徑
? ? ? ? ? ? ? android:bottomRightRadius右下角的半徑
stroke: 設(shè)置描邊纸肉,可描成實線或虛線。
? ? ? ? ? ? ?android:color描邊的顏色
? ? ? ? ? ? ?android:width描邊的寬度
? ? ? ? ? ? ?android:dashWidth設(shè)置虛線時的橫線長度
? ? ? ? ? ? ?android:dashGap設(shè)置虛線時的橫線之間的距離
接下來說下實際怎么使用,文件命名為mao1.xml喊熟,放在drawable目錄下:
大概的效果是這樣的:
接著在要使用的view里引用就可以了柏肪,例如本例中用做TextView的background:
最終的效果是這樣:
傳送門:GitHub地址