最近打算好好復習并學習下drawables然爆,為了加強記憶及方便以后查閱站粟,特再此處做記錄。
shape曾雕,圖形的意思奴烙,通過XML繪制形狀的基本方法。單獨使用的時候能夠完成一些簡單的圖形剖张,比如button的背景切诀、圖片的邊框等等,其對應的代碼為GradientDrawable.class搔弄。
shape標簽自身的屬性有:
1幅虑、android:shape,可選值為rectangle(矩形也是默認值)顾犹、oval(橢圓)倒庵、ring(環(huán)形,注意是環(huán)形炫刷,不是圓形擎宝,就是空心圓)、line(線形)
2浑玛、android:visible绍申,可選值為true(默認值)/false,從命名上看其功能應該是控制是否顯示顾彰,但設置后無效极阅,目前我還沒找到它的正確使用方式,網(wǎng)上也沒搜索到拘央,等將整個drawables復習完再好好研究下涂屁。
3、android:useLevel灰伟,可選值為true(默認值)/false拆又,具體用途我還是不太理解儒旬,只有在android:shape="ring"的時候才有效果,且必須設置為false否則環(huán)形不顯示帖族。設置為true的時候僅在<level-list>(LevelListDrawable)的上下文中有意義栈源。
4、android:innerRadius竖般,可選值為dimension(尺寸甚垦,如DP,默認值是-1)涣雕,設置的是內(nèi)環(huán)的半徑艰亮。只有在android:shape="ring"的時候才有效果,當值為-1的時候挣郭,此屬性等于沒有設置迄埃,當值為0時,會成為一個半徑等于android:thickness(環(huán)的厚度)的圓形兑障,當設置成為除了-1之外的其他負數(shù)值時侄非,會吞噬掉環(huán)的厚度,厚度縮小的值為本屬性值的絕對值流译,當設置的負數(shù)的絕對值大于等于環(huán)的厚度時逞怨,會吞噬掉整個環(huán)形,圖形消失福澡。
5叠赦、android:innerRadiusRatio,可選值為float(浮點型小數(shù)竞漾,默認值為3)眯搭,設置的也是內(nèi)環(huán)半徑窥翩,原理是內(nèi)環(huán)半徑=環(huán)寬/innerRadiusRatio业岁,只有在android:shape="ring"的時候且沒有設置android:innerRadius才有效果,如果設置了android:innerRadius寇蚊,則本屬性會被覆蓋失效(android:innerRadius=-1時除外)笔时。
6、android:thickness仗岸,可選值為dimension(尺寸允耿,如DP,默認值是-1扒怖,當值為-1的時候较锡,此屬性等于沒有設置),設置的是環(huán)的厚度(可以理解為外環(huán)半徑減去內(nèi)環(huán)半徑的值)盗痒,只有在android:shape="ring"的時候才有效果蚂蕴。
7低散、android:thicknessRatio,可選值為float(浮點型小數(shù)骡楼,默認值為9)熔号,設置的也是環(huán)的厚度,原理是環(huán)的厚度=環(huán)寬/thickness鸟整,只有在android:shape="ring"的時候且沒有設置android:thickness才有效果引镊,如果設置了android:thickness,則本屬性會被覆蓋失效(android:thickness=-1時除外)篮条。
8弟头、android:dither,可選值為true(默認值)/false涉茧,是否開啟抖動亮瓷。
9、android:tint:可選值為color降瞳,會在已經(jīng)有的圖形顏色上根據(jù)android:tintMode的設置嘱支,給shape覆蓋一層顏色。
10挣饥、android:tintMode:可選值為add除师、multiply、screen扔枫、src_atop汛聚、src_in(默認值)、src_over短荐。
shape的子標簽有:
1倚舀、size,設置圖形的大小忍宋,它的屬性有:
①android:width痕貌,寬度
②android:height,高度
2糠排、solid舵稠,設置填充的顏色,當android:shape="line"的時候沒有效果入宦,它的屬性有:
①android:color哺徊,色值
3、padding乾闰,設置內(nèi)邊距值落追,它的屬性有:
①android:bottom,底部內(nèi)邊距值
②android:left涯肩,左側(cè)內(nèi)邊距值
③android:right轿钠,右側(cè)內(nèi)邊距值
④android:top雹熬,頂部內(nèi)邊距值
4、corners谣膳,設置四個角的圓角竿报,只有在android:shape="rectangle"的時候才有效果,它的屬性有:
①android:radius继谚,四個角圓角
②android:topLeftRadius烈菌,左上角的圓角
③android:topRightRadius,右上角的圓角
④android:bottomLeftRadius花履,左下角的圓角
⑤android:bottomRightRadiusleft芽世,右下角的圓角
需要注意的是,②到⑤會覆蓋①中對應的位置
5诡壁、stroke济瓢,設置邊框,它的屬性有:
①android:color妹卿,邊框的顏色
②android:width旺矾,邊框的寬度
③android:dashGap,每段虛線的間隔
④android:dashWidth夺克,每段虛線的長度
6箕宙、gradient,設置漸變铺纽,如果設置了漸變會覆蓋掉solid的顏色柬帕,另外如果android:shape="line",則設置漸變無效狡门,它的屬性有:
①android:type陷寝,漸變的類型,可選值為linear(默認值其馏,線性漸變)凤跑、radial(放射漸變,設置該項時尝偎,必須設置android:gradientRadius饶火,否則不顯示)鹏控、sweep(掃描漸變)
②android:startColor:漸變開始的顏色
③android:centerColor:漸變中間的顏色
④android:endColor:漸變結(jié)束的顏色
⑤android:angle:漸變的角度致扯,只有當android:type="linear"時才有效,必須是45的倍數(shù)
⑥android:centerX:漸變中心顏色的X軸坐標当辐,在0.0到1.0之間抖僵,默認為0.5,表示在正中間
⑦android:centerY:漸變中心顏色的Y軸坐標缘揪,在0.0到1.0之間耍群,默認為0.5义桂,表示在正中間
⑧android:useLevel:跟shape的屬性一樣,具體作用還不太明白
⑨android:gradientRadius:漸變的半徑蹈垢,只有當android:type="radial"時才有效