drawable的說明

shape根節(jié)點

shape標(biāo)簽中包含的屬性
屬性  參數(shù)類型    說明
android:shape   rectangle眉抬、oval哲银、line竞端、ring    定義形狀的類型焙蚓,rectangle(矩形)、oval(橢圓)、line(線)、ring(圓環(huán))默認(rèn)為矩形
android:innerRadius int 圓環(huán)內(nèi)圓的半徑
android:innerRadiusRatio    int 內(nèi)半徑占整個Drawable寬度的比例妻熊,默認(rèn)值為9
android:thickness   int 圓環(huán)的厚度
android:thicknessRatio  int 厚度占整個Drawable寬度比例,默認(rèn)值為3
android:useLevel    boolean 設(shè)置等級洛心,配合LevelListDrawable使用時設(shè)置固耘,如果shape是ring的話,設(shè)置成false才能顯示圓環(huán)
android:visible boolean 設(shè)置是否可見
android:dither  boolean 是否抖動
android:tint    color   給圖片著色词身,這個著色要優(yōu)先于solid子節(jié)點中的著色的
android:tintMode    add厅目、multiply、screen法严、src_atop损敷、src_in、src_over    著色模式


子節(jié)點:
solid 填充色
表示形狀的填充色深啤,只有color一個屬性:android:color


子節(jié)點:
corners 圓角
表示圓角的半徑拗馒,對應(yīng)有四個角的屬性,和一個總體的屬性
屬性  參數(shù)類型    說明
android:radius  int 統(tǒng)一設(shè)置圓角半徑
android:bottomLeftRadius    int 設(shè)置左下角圓角半徑
android:bottomRightRadius   int 設(shè)置右下角圓角半徑
android:topLeftRadius   int 設(shè)置左上角圓角半徑
android:topRightRadius  int 設(shè)置右上角圓角半徑


子節(jié)點:
gradient 漸變色
表示漸變色溯街,可以設(shè)置形狀填充的顏色為漸變色
屬性  參數(shù)類型    說明
android:angle   int 設(shè)置旋轉(zhuǎn)的角度诱桂,45的倍數(shù)
android:startColor  color   顏色變化的起始值
android:endColor    color   顏色變化的結(jié)束值
android:centerColor color   中間的顏色
android:centerX int 漸變中心點的橫坐標(biāo)
android:centerY int 漸變的中心點的縱坐標(biāo)
android:gradientRadius  int 漸變的梯度,當(dāng)android:type=”radial”有效
android:type    linear 呈昔、 radial 挥等、 sweep 漸變類別,linear(線性)為默認(rèn)值堤尾,radial(徑內(nèi)漸變)肝劲,sweep(掃描漸變)
android:useLevel    boolean 設(shè)置等級,配合LevelListDrawable使用時設(shè)置


子節(jié)點:
stroke 邊框
表示邊框郭宝。
屬性  參數(shù)類型    說明
android:color   color   邊框顏色
android:width   int 邊框?qū)挾?android:dashGap int 邊框虛線間隙大小
android:dashWidth   int 邊框虛線每個小節(jié)的寬度


子節(jié)點:
size 大小
設(shè)置背景大小辞槐,width和height倆屬性。一般來說這個值不是shape的最終顯示大小粘室,因為shape作為背景時會根據(jù)View的大小而填充其背景榄檬,因此Shape的大小很多時候是View的大小決定的。


子節(jié)點:
padding 內(nèi)邊距
表示內(nèi)容或子標(biāo)簽邊距衔统,4個屬性top鹿榜、bottom先朦、left、right犬缨,需要注意的是這個標(biāo)簽的作用是為內(nèi)容設(shè)置與當(dāng)前應(yīng)用此shape的View的邊距,而不是設(shè)置當(dāng)前View與父元素的邊距棉浸。

參考文章
https://blog.csdn.net/javazejian/article/details/52247324
https://blog.csdn.net/javazejian/article/details/52247337
http://keeganlee.me/post/android/20150830

-----------------------------------------------------------------------------------------------

android開發(fā)藝術(shù)中關(guān)于Drawable的知識點總結(jié)

Drawable介紹:Drawable表示的是一種可以在Canvas上進(jìn)行繪制的抽象的概念怀薛,它的種類很多,最常見的顏色和圖片都可以是一個Drawable迷郑。在實際開發(fā)中枝恋,Drawable常被用來作為View的背景使用。Drawable一般都是通過XML來定義的嗡害,Drawable的內(nèi)部寬/高這個參數(shù)比較重要焚碌,通過getIntrinsicWidth和getIntrinsicHeight這兩個方法來獲得它們,并不是所有的Drawable都有內(nèi)部寬/高霸妹,比如一張圖片所形成的Drawable十电,它的內(nèi)部寬/高就是圖片的寬/高,但是一個顏色所形成的Drawable叹螟,它就沒有內(nèi)部寬/高的概念鹃骂。另外需要注意的是,Drawable的內(nèi)部寬/高不等同于它的大小罢绽,一般來說畏线,Drawable是沒有大小概念的,當(dāng)用作View的背景時良价,Drawable會被拉伸至View的等同大小寝殴。

1:BitmapDrawable,表示的就是一張圖片


屬性的具體含義如下:
antialias:是否開啟圖片抗鋸齒功能明垢,應(yīng)該開啟蚣常;
dither:是否開啟抖動效果,應(yīng)該開啟袖外;
filter:是否開啟過濾效果史隆,應(yīng)該開啟;
gravity:對圖片進(jìn)行定位曼验,具體參數(shù)如下:



tileMode:平鋪模式泌射,可選值有disable(關(guān)閉平鋪模式,這也是默認(rèn)值)鬓照,clamp(圖片四周的像素會擴(kuò)展到周圍區(qū)域)熔酷,repeat(表示水平和豎直方向上的平鋪效果),mirror(一種在水平和豎直方向上的鏡面投影效果)豺裆;

2:NinePatchDrawable拒秘,表示的就是一張.9格式圖片号显,.9圖片可以自動地根據(jù)所需的寬/高進(jìn)行相應(yīng)的縮放并保證不失真


也可以使用bitmap標(biāo)簽中也可以使用.9圖,即BitmapDrawable也可以代表一個.9格式的圖片躺酒。

3:ShapeDrawable押蚤,通過顏色來構(gòu)造的圖像,它既可以是純色的圖形羹应,也可以是具有漸變效果的圖形揽碘,其實體類是GrandientDrawable。



具體屬性介紹如下:
shape:有四個值rectangle(矩形)园匹,oval(橢圓)雳刺,line(橫線),ring(圓環(huán))裸违。默認(rèn)值是矩形掖桦,另外line和ring這兩個選項必須要通過<stroke>標(biāo)簽來指定線的寬度和顏色等信息,否則將無法達(dá)到預(yù)期的顯示效果供汛。針對ring這個形狀枪汪,有5個特殊的屬性,如下所示:



corners:表示shape的四個角的角度怔昨;

gradient:它與<solid>標(biāo)簽是互相排斥的料饥,其中solid表示純色填充,而gradient表示漸變效果朱监,gradient有如下幾個屬性:




solid:表示純色填充岸啡,通過android:color即可指定shape中填充的顏色;
stroke:shape的描邊赫编,有如下幾個屬性

注意如果android:dashWidth和android:dashGap有任何一個為0巡蘸,那么虛線效果將不能生效。

4:LayerDrawable擂送,LayerDrawable對應(yīng)的xml標(biāo)簽是<layer-list>悦荒,它表示一種層次化的Drawable集合,通過將不同的Drawable放置在不同的層上面從而達(dá)到一種疊加后的效果嘹吨。


注意:一個layer-list可以包含多個item搬味,下面的item會覆蓋上面的item

5:StateListDrawable,StateListDrawable對應(yīng)于<selector>標(biāo)簽蟀拷,它也是表示Drawable集合碰纬,每個Drawable都對應(yīng)著View的一種狀態(tài),這樣系統(tǒng)就會根據(jù)View的狀態(tài)來選擇合適的Drawable问芬。StateListDrawable主要用于設(shè)置可單擊的View的背景悦析,最常見的是Button。



屬性說明如下:
constantSize:StateListDrawable的固定大小是否不隨著其狀態(tài)的改變而改變此衅,因為狀態(tài)的改變會導(dǎo)致StateListDrawable切換到具體的Drawable,而不同的Drawable具有不同的固有大小。True表示StateListDrawable的固有大小保持不變泣港,這時它的固有大小是內(nèi)部所有Drawable的固有大小的最大值,false則會隨著狀態(tài)的改變而改變预烙,默認(rèn)值為false。
dither:是否開啟抖動效果道媚,默認(rèn)值為true默伍;
variablePadding:StateListDrawable的padding表示是否隨著其狀態(tài)的改變而改變,true表示會隨著狀態(tài)的改變而改變衰琐,false表示StateListDrawable的padding是內(nèi)部所有Drawable的padding的最大值,默認(rèn)值為false炼蹦,不建議開啟此選項羡宙。
item:表示一個具體的Drawable,其中android:drawable是一個已有Drawable的資源id掐隐,剩下的屬性表示View的各種狀態(tài)狗热,每個item表示的都是一種狀態(tài)下的Drawable信息。View的常見狀態(tài)如下:


6:LevelListDrawable虑省,LevelListDrawable對應(yīng)于<level-list>標(biāo)簽匿刮,表示一個Drawable集合,集合中的每個Drawable都有一個等級(level)的概念探颈。根據(jù)不同的等級熟丸,LevelListDrawable會切換為相應(yīng)的Drawable,語法如下:

7:TransitionDrawable伪节,TransitionDrawable對應(yīng)于<transition>標(biāo)簽光羞,它用于實現(xiàn)兩個Drawable之間的淡入淡出效果,它的語法如下所示:


如果View的背景設(shè)置為TransitionDrawable的話怀大,那么還需要通過startTransition和reverseTransition方法來實現(xiàn)淡入淡出的效果以及它的逆過程纱兑。示例代碼如下:


8:InsetDrawable,InsetDrawable對應(yīng)于<inset>標(biāo)簽化借,它可以將其他Drawable內(nèi)嵌到自己當(dāng)中潜慎,并可以在四周留出一定的間距。當(dāng)一個View希望自己的背景比自己的實際區(qū)域小的時候蓖康,可以采用InsetDrawable來實現(xiàn)铐炫,通過LayerDrawable也可以實現(xiàn)這種效果。語法如下:

9:ScaleDrawable蒜焊,ScaleDrawable對應(yīng)于<scale>標(biāo)簽驳遵,它可以根據(jù)自己的等級(level)將指定的Drawable縮放到一定比例,語法如下所示:


在上面的屬性中山涡,android:scaleGravity的含義等同于shape中的android:gravity堤结,而android:scaleWidth和android:scaleHeight分別表示對指定Drawable寬和高的縮放比例唆迁,以百分比的形式表示,比如25%

10:ClipDrawable竞穷,ClipDrawable對應(yīng)于<clip>標(biāo)簽唐责,它可以根據(jù)自己當(dāng)前的等級(level)來裁剪另一個Drawable,裁剪方向可以通過android:clipOrientation和android:gravity這兩個屬性來共同控制瘾带,語法如下:


其中鼠哥,clipOrientation表示裁剪方向,gravity比較復(fù)雜看政,需要和clipOrientation一起才能發(fā)揮作用朴恳,gravity的具體屬性如下:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市允蚣,隨后出現(xiàn)的幾起案子于颖,更是在濱河造成了極大的恐慌,老刑警劉巖嚷兔,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件森渐,死亡現(xiàn)場離奇詭異,居然都是意外死亡冒晰,警方通過查閱死者的電腦和手機(jī)同衣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壶运,“玉大人耐齐,你說我怎么就攤上這事〗椋” “怎么了蚪缀?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恕出。 經(jīng)常有香客問我询枚,道長,這世上最難降的妖魔是什么浙巫? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任金蜀,我火速辦了婚禮,結(jié)果婚禮上的畴,老公的妹妹穿的比我還像新娘渊抄。我一直安慰自己,他們只是感情好丧裁,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布护桦。 她就那樣靜靜地躺著,像睡著了一般煎娇。 火紅的嫁衣襯著肌膚如雪二庵。 梳的紋絲不亂的頭發(fā)上贪染,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音催享,去河邊找鬼杭隙。 笑死,一個胖子當(dāng)著我的面吹牛因妙,可吹牛的內(nèi)容都是我干的痰憎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼攀涵,長吁一口氣:“原來是場噩夢啊……” “哼铣耘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起以故,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜗细,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后据德,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡跷车,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年棘利,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朽缴。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡善玫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出密强,到底是詐尸還是另有隱情茅郎,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布或渤,位于F島的核電站系冗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薪鹦。R本人自食惡果不足惜掌敬,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望池磁。 院中可真熱鬧奔害,春花似錦、人聲如沸地熄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽端考。三九已至雅潭,卻和暖如春揭厚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寻馏。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工棋弥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诚欠。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓顽染,卻偏偏與公主長得像,于是被迫代替她去往敵國和親轰绵。 傳聞我的和親對象是個殘疾皇子粉寞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355