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的具體屬性如下: