Android里面常用的Drawable的使用

一、ShapeDrawable:
通過(guò)顏色來(lái)構(gòu)造圖形炕淮,既可以為純色圖形拆火,也可以為具有漸變效果的圖形。能構(gòu)成的圖形有rectangle涂圆、oval们镜、ring、line
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:innerRadius="100dp"
 android:shape="ring"
 android:thickness="10dp"
 android:useLevel="false" >
 <stroke
  android:width="10dp"
  android:color="@color/colorAccent" />
</shape>

2.里面屬性的介紹:

  • android:shape 要繪制的形狀润歉,rectangle模狭、oval、ring踩衩、line
  • <stroke> 形狀的描邊嚼鹉,有如下屬性
    - android:width 描邊的寬度
    - android:color 描邊的顏色
    - android:dashGap 繪制虛線的線寬
    - android:dashWidth 繪制虛線的線段間隔 (要繪制虛線,后兩者均不能為0)
    -<solid> 純色填充驱富,android:color指定shape顏色
  • <gradient> 漸變效果锚赤,與solid不可一起用,有如下屬性
    - android:angle 漸變的角度褐鸥,必須為45的倍數(shù)
    - android:startColor 漸變的起始顏色
    - android:centerColor 漸變的中間顏色
    - android:endColor 漸變的結(jié)束顏色
    - android:centerX 漸變的中心點(diǎn)橫坐標(biāo)
    - android:centerY 漸變的中心點(diǎn)縱坐標(biāo)
    - android:gradientRadius 漸變半徑
    - android:type 漸變類型线脚,linear(線性)、sweep(掃視)晶疼、radial(徑向)
  • <corners> 表示矩形(rectangle)的四個(gè)角的角度酒贬,不適用于其他shape 又憨,有如下屬性
    - android:topLeftRadius翠霍、android:topRightRadius、android:bottomLeftRadius蠢莺、android:bottomRightRadius 分別為設(shè)置左上角寒匙、右上角、左下角、右下角的角度
    - android:radius 為四角設(shè)置相同角度锄弱,優(yōu)先級(jí)低考蕾,會(huì)被其他四個(gè)屬性覆蓋
  • <size> shape的寬高,對(duì)應(yīng)著android:width会宪、android:height
    - shape默認(rèn)無(wú)寬高肖卧,getIntrinsicHeight、getIntrinsicWidth返回-1
    - 通過(guò)size可以設(shè)置其寬高掸鹅,但作為view背景時(shí)任然會(huì)被拉伸或縮小為 view大小
  • <padding> 設(shè)置容納shape的view的空白間距

二塞帐、StateListDrawable:
可以看作是一個(gè)狀態(tài)選擇器,通過(guò)view不同的狀態(tài)選擇對(duì)應(yīng)的item中的drawable顯示
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@color/colorPrimaryDark" android:state_pressed="false"></item>
 <item android:drawable="@color/colorAccent" android:state_pressed="true"></item>
</selector>

2.常見狀態(tài):
android:state_pressed 當(dāng)按住一個(gè)view時(shí)巍沙,按下的狀態(tài)
android:state_checked 當(dāng)一個(gè)view被選中時(shí)葵姥,適用于CheckBox
android:state_selected 當(dāng)一個(gè)view被選擇時(shí)
android:state_enabled 當(dāng)一個(gè)view處于可用狀態(tài)
android:state_focused 當(dāng)view獲取焦點(diǎn)

三、LayerDeawable:
表示的是一種分層的的Drawable集合句携,類似于ps中的圖層的概念榔幸,將多個(gè)drawable放在不同的層上面形成一種疊加的效果
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@mipmap/night" />
 <item
  android:drawable="@mipmap/photo6"
  android:gravity="center" />
</layer-list>

2.常用事項(xiàng):

1、layer-list可以包含多個(gè)item矮嫉,每個(gè)item表示一個(gè)drawable削咆,并且后添加的item會(huì)覆蓋到之前添加的item上面
2、默認(rèn)情況下蠢笋,layer-list所有的drawable都會(huì)縮放至view大大小态辛,通過(guò)設(shè)施android:gravity可以調(diào)節(jié)縮放的效果
3、可以設(shè)置上下左右偏移量挺尿,android:top奏黑、android:bottom、android:left编矾、android:right

四熟史、LevelListDrawable:

表示一個(gè)drawable集合,集合中的每一個(gè)Drawable都有一個(gè)等級(jí)(level)窄俏,通過(guò)設(shè)置不同的等級(jí)蹂匹,可以使LevelListDrawable切換至不同的Drawable。等級(jí)范圍在0~10000之間凹蜈, android:maxLevel設(shè)置最大level限寞, android:minLevel設(shè)置最小level
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item
  android:drawable="@mipmap/photo0"
  android:maxLevel="20"
  android:minLevel="10" />
 <item
  android:drawable="@mipmap/photo1"
  android:maxLevel="40"
  android:minLevel="30" />
</level-list>

2.通過(guò)設(shè)置level可切換不同的Drawable,在代碼中:

//將ImageView的背景切換為photo1仰坦, 35 在30~40之間
iv.setImageLevel(35); 
//將ImageView的背景切換為photo0履植, 15在10~20之間
iv.setImageLevel(15);

五、InsetDrawable:
嵌入其他Drawable悄晃,并可以在四周保留一定的間距
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
 android:drawable="@mipmap/photo6"
 android:inset="20dp">
</inset>

六玫霎、ClipDrawable:
根據(jù)自己的等級(jí)(level)來(lái)對(duì)另一個(gè)Drawable進(jìn)行裁剪,裁剪的方向由android:clipOrientation、android:gravity共同決定庶近。設(shè)置level進(jìn)行裁剪翁脆,level的大小從0到10000,level為0時(shí)完全不顯示鼻种,為10000時(shí)完全顯示 :
1.示例:

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
 android:clipOrientation="horizontal"
 android:drawable="@mipmap/night"
 android:gravity="right"></clip>

2.用法:

<ImageView
 android:id="@+id/iv_clip"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:src="@drawable/drawable_clip" />

通過(guò)設(shè)置level來(lái)裁剪:

ImageView iv = (ImageView) findViewById(R.id.iv_clip);
ClipDrawable drawable= (ClipDrawable) iv.getDrawable();
drawable.setLevel(5000); // 設(shè)置的level越大裁剪的范圍越小

android:clipOrientation 反番,horizontal 水平方向裁剪,vertical 垂直方向裁剪
android:gravity 叉钥,配合裁剪方向

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恬口,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沼侣,更是在濱河造成了極大的恐慌祖能,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛾洛,死亡現(xiàn)場(chǎng)離奇詭異养铸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)轧膘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門钞螟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谎碍,你說(shuō)我怎么就攤上這事鳞滨。” “怎么了蟆淀?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拯啦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我熔任,道長(zhǎng)褒链,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任疑苔,我火速辦了婚禮甫匹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惦费。我一直安慰自己兵迅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布薪贫。 她就那樣靜靜地躺著恍箭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪后雷。 梳的紋絲不亂的頭發(fā)上季惯,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音臀突,去河邊找鬼勉抓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛候学,可吹牛的內(nèi)容都是我干的藕筋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼梳码,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隐圾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起掰茶,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤暇藏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后濒蒋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盐碱,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年沪伙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓮顽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡围橡,死狀恐怖暖混,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翁授,我是刑警寧澤拣播,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站收擦,受9級(jí)特大地震影響诫尽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炬守,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一牧嫉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧减途,春花似錦酣藻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至税产,卻和暖如春怕轿,著一層夾襖步出監(jiān)牢的瞬間偷崩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工撞羽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阐斜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓诀紊,卻偏偏與公主長(zhǎng)得像谒出,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邻奠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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