Android:drawables——1、shape

最近打算好好復習并學習下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"時才有效

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容