最近打算好好復習并學習下drawables,為了加強記憶及方便以后查閱,特再此處做記錄。
shape,圖形的意思,通過XML繪制形狀的基本方法。單獨使用的時候能夠完成一些簡單的圖形,比如button的背景、圖片的邊框等等,其對應的代碼為GradientDrawable.class。
shape標簽自身的屬性有:
1、android:shape,可選值為rectangle(矩形也是默認值)、oval(橢圓)、ring(環形,注意是環形,不是圓形,就是空心圓)、line(線形)
2、android:visible,可選值為true(默認值)/false,從命名上看其功能應該是控制是否顯示,但設置后無效,目前我還沒找到它的正確使用方式,網上也沒搜索到,等將整個drawables復習完再好好研究下。
3、android:useLevel,可選值為true(默認值)/false,具體用途我還是不太理解,只有在android:shape="ring"的時候才有效果,且必須設置為false否則環形不顯示。設置為true的時候僅在<level-list>(LevelListDrawable)的上下文中有意義。
4、android:innerRadius,可選值為dimension(尺寸,如DP,默認值是-1),設置的是內環的半徑。只有在android:shape="ring"的時候才有效果,當值為-1的時候,此屬性等于沒有設置,當值為0時,會成為一個半徑等于android:thickness(環的厚度)的圓形,當設置成為除了-1之外的其他負數值時,會吞噬掉環的厚度,厚度縮小的值為本屬性值的絕對值,當設置的負數的絕對值大于等于環的厚度時,會吞噬掉整個環形,圖形消失。
5、android:innerRadiusRatio,可選值為float(浮點型小數,默認值為3),設置的也是內環半徑,原理是內環半徑=環寬/innerRadiusRatio,只有在android:shape="ring"的時候且沒有設置android:innerRadius才有效果,如果設置了android:innerRadius,則本屬性會被覆蓋失效(android:innerRadius=-1時除外)。
6、android:thickness,可選值為dimension(尺寸,如DP,默認值是-1,當值為-1的時候,此屬性等于沒有設置),設置的是環的厚度(可以理解為外環半徑減去內環半徑的值),只有在android:shape="ring"的時候才有效果。
7、android:thicknessRatio,可選值為float(浮點型小數,默認值為9),設置的也是環的厚度,原理是環的厚度=環寬/thickness,只有在android:shape="ring"的時候且沒有設置android:thickness才有效果,如果設置了android:thickness,則本屬性會被覆蓋失效(android:thickness=-1時除外)。
8、android:dither,可選值為true(默認值)/false,是否開啟抖動。
9、android:tint:可選值為color,會在已經有的圖形顏色上根據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,設置內邊距值,它的屬性有:
①android:bottom,底部內邊距值
②android:left,左側內邊距值
③android:right,右側內邊距值
④android:top,頂部內邊距值
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:漸變結束的顏色
⑤android:angle:漸變的角度,只有當android:type="linear"時才有效,必須是45的倍數
⑥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"時才有效