用 Xml 寫 Shape Drawable 太繁瑣了, so...

so, DrawableBuilder is comming...

源碼地址

該 Builder 類主要提供語(yǔ)義化的 API 進(jìn)行快捷的 Shape 創(chuàng)建操作灰嫉。

通過(guò)語(yǔ)義化的 API 創(chuàng)建 shape drawable颤专。

如下豹缀,幾行代碼就生成了一個(gè)線條背景 drawable。

Drawable drawable = new DrawableBuilder()
  .line()
  .build();
tvName.setBackground(drawable);

效果:

image

而之前诞仓,我們大都是像如下方式來(lái)構(gòu)造線條 shape壁晒。

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <stroke android:width="1dp" android:color="#34495e"/>
</shape>

用 xml drawable 設(shè)置背景

tvName = (TextView) findViewById(R.id.tvName);
tvName.setBackgroundResource(R.drawable.bk_line_drawable);

樣式

image

可以看到诵叁,兩種方式效果一致,但是使用體驗(yàn)卻更好簿寂。在寫好布局文件后漾抬,都需要去 res 目錄下再創(chuàng)建 drawable 文件,然后再切換回 Activity 或者布局文件進(jìn)行背景設(shè)置常遂,這就免不了我們跳來(lái)跳去的切換目錄纳令,很麻煩。

相比而言,語(yǔ)義化 API 就顯得非常友好易用平绩,如下所示:

Drawable drawable = new DrawableBuilder()
  .line()
  .build();
tvName.setBackground(drawable);

樣式:

image

跟 xml 樣式一致圈匆,并且代碼更少,更易于使用捏雌。

以下是圓角等其他線條的展示跃赚。

指定度數(shù)的圓角線條

new DrawableBuilder()
  .line()
  .corner(4)
  .build();

樣式:

image

橢圓形圓角

new DrawableBuilder()
  .line()
  .roundCorner()
  .build();     

樣式:

image

充滿顏色的圓角

new DrawableBuilder()
  .line()
  .roundCorner()
  .fill("#d35400")
  .build();

樣式:

image

虛線線條

new DrawableBuilder()
  .line()
  .dash()
  .build();

樣式

image

其他 API

除了以上語(yǔ)義化 API,還提供了相應(yīng)自定義參數(shù)的 API性湿,如下所示:

API 說(shuō)明
lineWidth(int width) 設(shè)置線條寬度来累,參數(shù)為具體數(shù)值,無(wú)需轉(zhuǎn)換
lineColor(int lineColor) 設(shè)置線條顏色
corner(float cornerRadius) 設(shè)置圓角度數(shù)
dashWidth(float dashWidth) 設(shè)置虛線每個(gè)單元長(zhǎng)度
dashGap(float dashGap) 設(shè)置虛線邊框每個(gè)單元之間的間距
fill(@ColorInt int bkColor) 設(shè)置填充顏色
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窘奏,一起剝皮案震驚了整個(gè)濱河市嘹锁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌着裹,老刑警劉巖领猾,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異骇扇,居然都是意外死亡摔竿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門少孝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)继低,“玉大人,你說(shuō)我怎么就攤上這事稍走≡蹋” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵婿脸,是天一觀的道長(zhǎng)粱胜。 經(jīng)常有香客問我,道長(zhǎng)狐树,這世上最難降的妖魔是什么焙压? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮抑钟,結(jié)果婚禮上涯曲,老公的妹妹穿的比我還像新娘。我一直安慰自己在塔,他們只是感情好幻件,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著心俗,像睡著了一般傲武。 火紅的嫁衣襯著肌膚如雪蓉驹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天揪利,我揣著相機(jī)與錄音态兴,去河邊找鬼。 笑死疟位,一個(gè)胖子當(dāng)著我的面吹牛瞻润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甜刻,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼绍撞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了得院?” 一聲冷哼從身側(cè)響起傻铣,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祥绞,沒想到半個(gè)月后非洲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜕径,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年两踏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兜喻。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梦染,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朴皆,到底是詐尸還是另有隱情帕识,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布车荔,位于F島的核電站渡冻,受9級(jí)特大地震影響戚扳,放射性物質(zhì)發(fā)生泄漏忧便。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一帽借、第九天 我趴在偏房一處隱蔽的房頂上張望珠增。 院中可真熱鬧,春花似錦砍艾、人聲如沸蒂教。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凝垛。三九已至懊悯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梦皮,已是汗流浹背炭分。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剑肯,地道東北人捧毛。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像让网,于是被迫代替她去往敵國(guó)和親呀忧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容