shape 很強大,但是一直對其很模糊,現在總結一下自己的盲區和認識目錄相關子屬性
corners
solid
gradient :用以定義漸變色,可以定義兩色漸變和三色漸變,及漸變樣式;屬性如下
stroke
size和padding
shape 自身屬性
實際應用
官方文件: ;首先去看官方文件;
//右下角的圓角半徑
corners標籤是用來字義圓角的,其它四個是逐個字義每個角的圓角半徑。
solid用以指定內部填充色,只有乙個屬性:顏色
//使用levellistdrawable時就要設定為true。設為false時才有漸變效果
子屬性android:angle屬性(僅對線性漸變有效),其它兩種漸變方式都沒有任何動靜;eg:
子屬性centerx、centery:兩個屬性用於設定漸變的中心點位置,僅當漸變型別為放射漸變時有效,型別為分數或小數,不接受 dimension。預設值是0.5,有效值是0.0~1.0,超出該範圍後會看不出漸變效果。centerx、centery的取值其實是寬和高的 百分比;eg
<?xml version="1.0" encoding="utf-8"?>
//虛線的間隔
這是描邊屬性,可以定義描邊的寬度,顏色,虛實線等。
這兩個基本上不怎麼用,因為他們所具有的功能,控制項本身也能實現。 size:是用來定義圖形的大小的。
android:shape=["rectangle" | "oval" | "line" | "ring"]
shape的形狀,預設為矩形,可以設定為矩形(rectangle)、橢圓形(oval)、線性形狀(line)、環形(ring)
android:dither 是否抖動
下面的屬性只有在android:shape="ring時可用:
android:innerradius 尺寸,內環的半徑。
android:innerradiusratio 浮點型,以環的寬度比率來表示內環的半徑,
android:thickness 尺寸,環的厚度
android:thicknessratio 浮點型,以環的寬度比率來表示環的厚度,例如,如果android:thicknessratio="2",
android:uselevel boolean值,如果當做是levellistdrawable使用時值為true,否則為false.
可見,只有第乙個shape是可用的,其它五個都是shape等於ring時所特有的。
注意,無論這裡shape取什麼形狀,他的子標籤都是可用的,但有時並不會有效果,比如在shape為橢圓時,那corners標籤就不會有效果,很顯然的道理。同時,uselevel一般設定為false 。下面乙個個看看各個形狀都是怎麼樣的;
橢圓形(可以畫出圓形):
如果要用shape 作為按鈕的描邊背景:1. 給那種矩形的button 當做背景,用線性:用處不多
圓環:用ring實現。
<?xml version="1.0" encoding="utf-8"?>
2 shape 畫虛線
<?xml version="1.0" encoding="utf-8"?>
並在 用的地方加乙個
android:layertype="software"
屬性,這樣真機上才能顯示出來;
3. 背景框
如果要用shape 作為按鈕的背景:
a 只有描邊(背景邊緣部分),則只需要乙個stroke 即可;如果對於是矩形形狀想要圓角的話,可以用radius,對於圓形的imageview,則不需要,但是要把shape的形狀設定為 oval即可。
// 一般的圓角按鈕背景shape
<?xml version="1.0" encoding="utf-8"?>
效果展示:
// 為圓形的imageview 新增描邊背景,不需要radius,只要乙個stroke就夠了
<?xml version="1.0" encoding="utf-8"?>
效果圖:
b 背景填充:則需要加上 soild ;
當我們用xml 描述shape ,也會存在乙個缺點, 就是改動一點就會有乙個xml 出現,不是很方便,所以我們需要動態的建立相應的drawable ,如何實現
首先需要知道,用xml 描述的shape 在類的屬性中屬於 gradientdrawable 。不是屬於shapedrawable,這一點要搞清楚。那看**如何實現?
tv.setonclicklistener
效果為:
後面的就可以根據這個來寫乙個shape 工具類,不必去寫那麼多的類了。
Android shape使用詳解
一 在res drawable資料夾下建立乙個名為gradient box的xml檔案 xmlns android android shape rectangle android radius 8dp android topleftradius 5dp android toprightradius ...
Android shape學習筆記
上兩篇講了布局控制項一些常用的屬性介紹。今天講下shape。shape有幾種形狀 android shape rectangle line oval ring 矩形 線條 橢圓 圓環 shape有幾種屬性 corners 圓角半徑 gradient 顏色漸變 padding 內邊距 size 尺寸大...
android shape的使用 邊框
android中常常使用shape來定義控制項的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結 先寫drawable裡面的xml檔案,裡面設定shape來設定文字框的特殊效果。olid 實心,就是填充的意思 android color指定填充的顏色 gradient...