如果使用xml文件來(lái)給各種控件設(shè)置背景寇损,那么就會(huì)出現(xiàn)一個(gè)問(wèn)題:
隨著項(xiàng)目不斷維護(hù)升級(jí)州疾,最后會(huì)出現(xiàn)很多各種背景剂习,然而,如果都按照控件用途來(lái)命名逊移,會(huì)很難發(fā)現(xiàn)那些本來(lái)可以重用的xml文件预吆,導(dǎo)致寫(xiě)出一堆的重復(fù)代碼。
解決辦法就是統(tǒng)一命名規(guī)則螟左,最好符合以下要求:
- 不同點(diǎn)開(kāi)xml文件,一眼就能看出它的各種特征觅够,包括:形狀/圓角大小/填充色/邊框色等等胶背。
- 類(lèi)似的文件符號(hào)名字排序分類(lèi)規(guī)律,能夠快速定位查找喘先。比如形狀一樣的都在一起钳吟。
- 文件名不用太長(zhǎng)欢揖,太長(zhǎng)找起來(lái)也累惰帽。
雖然有一個(gè)很好用的selector
自動(dòng)生成插件 android-selector-chapek 可款,但是它需要符合它的命名規(guī)則琉用,要指定各種狀態(tài)笆搓,而我們隨著開(kāi)發(fā)不斷增改需求籽懦,可能之前的pressed
狀態(tài)會(huì)成為其他按鈕的normal
狀態(tài)崩哩,還是會(huì)出現(xiàn)重復(fù)档悠,所以決定不使用思喊。
最后總結(jié)的shape
和selector
命名規(guī)則如下:
Shape
- rectangle:
rect_radius_[_tl_tr_bl_br]_colorSolid[light]_colorStroke[dark]
解釋?zhuān)?br>
tl:topLeft
br:bottomRight
舉例:
rect_16_tl_tr_bluelight_greendark
一個(gè)左上-右下圓角為16dp壁酬,填充色為淺藍(lán)色,邊框?yàn)樯罹G色的shape
- oval
ovalName_size1_[size2]_solidColor_strokeColor
- circle:
circle_size_solidColor_strokeColor
舉例:circle_24_redlight_reddark - oval:
oval_width_height_solidColor_strokeColor
舉例:oval_24_16_yellowlight_bluedark
其他的line
、ring
用的比較少舆乔,其實(shí)規(guī)則也類(lèi)似岳服。
Selector
sel_shapeName_radius_[stroke]_[tl_tr_bl_br]_normalSolidColor_pressedSolidColor
解釋?zhuān)?br>
shapeName: 形狀名,可選:rect/circle/ovald等等
radius: 圓角大小
stroke: 是否包含邊框
normalSolidColor: 普通狀態(tài)下的填充色
pressedSolidColor: 按下?tīng)顟B(tài)下的填充色
舉例:
sel_rect_6_stoke_white_blue 一個(gè)圓角大小為6dp包含邊框希俩,普通狀態(tài)白色吊宋,按下時(shí)藍(lán)色的selector
。
終于颜武,drawable
目錄下的世界清凈了璃搜!