有時疮鲫,我們?yōu)榱薃PP中節(jié)省空間妇多,在能用顏色替代的地方就不要用圖片砌梆,而如何將顏色組織成想要的形狀及如何為指定的顏色添加描邊咸包、漸變等來模擬圖片就顯的極為重要了,這些就是靠shape來完成的坟比。
shape標簽的屬性
<shape xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:shape="ring" shape的形狀默認是矩形(rectangle) 橢圓形(oval) 線性形狀(line) 環(huán)形(ring)
一下屬性只有為環(huán)形(ring)才可以使用
? ? android:innerRadiusRatio="200dp" 浮點型 以環(huán)的寬度比率來表示內(nèi)環(huán)的半徑
? ? android:thicknessRatio="10dp" 浮點型 以環(huán)的寬度比率來表示環(huán)的厚度
? ? android:innerRadius="20dp" 尺寸內(nèi)環(huán)的半徑
? ? android:thickness="50dp" 尺寸 環(huán)的厚度
? ? android:useLevel="false" boolean值柠衅,如果當做是LevelListDrawable使用時值為true,否則為false.
? ? >
shape標簽下包含的子標簽
Corners? 定義圓角
solid? 指定內(nèi)部填充色
gradient 定義漸變色? 可以定義兩色漸變 三色漸變? 漸變樣式
storke? 描邊的屬性
size? 定義圖形大小
ppadding 定義內(nèi)部邊距
Corners? 定義圓角
? ? <corners
? ? android:bottomLeftRadius="10dp"? 左下角的圓角半徑
? ? android:bottomRightRadius="10dp"? 右下角的圓角半徑
? ? android:radius="10dp"? 全部圓角
? ? android:topLeftRadius="10dp" 左上角的圓角半徑
? ? android:topRightRadius="10dp" /> 右上角的圓角半徑
如果每個角都得設(shè)置的話只用設(shè)置radius就可以了 不用設(shè)置其他的
有單獨的業(yè)務(wù)需求可以采用另外幾個屬性
使用方法? 再需要添加的控件中android:background="@drawable/xml的名字"
單獨用Corners是看不出效果的還得需要添加sloid來配合使用? 下面我們來講解solid
solid 內(nèi)部填充色
<solid android:color="@color/colorPrimary" />填充的顏色
solid只有一個填充顏色的屬性
gradient? 定義漸變色? 可以定義兩色漸變 三色漸變? 漸變樣式
<gradient
? ? android:angle="integer" 漸變角度? 必須是45的倍數(shù) 0為從左到右? 90為從上到下
? ? android:centerColor="color" 漸變中間點的顏色,在開始與結(jié)束點之間
? ? android:centerX="float" 漸變中心X的相當位置 范圍為0~1
? ? android:centerY="float"? 漸變中心Y的相當位置 范圍0 ~1
? ? android:endColor="color" 漸變結(jié)束點的顏色
? ? android:gradientRadius="float"? 漸變的半徑? 只有當漸變類型為radial(放射漸變)時才能使用
? ? android:startColor="color"? 漸變開始點的顏色
? ? android:type="linear" 共三種漸變形式 linear(線性漸變默認) radial(放射漸變) sweep(掃描漸變)
? ? android:useLevel="true"? 使用LevelListDrawable時就要設(shè)置為true谣蠢。設(shè)為false時才有漸變效果 />
(1) 線性漸變
<gradient
? ? android:type="linear"
? ? android:startColor="#ff0000"
? ? android:centerColor="#00ff00"
? ? android:endColor="#0000ff"/>
放射性漸變
<gradient
? ? android:type="radial"
? ? android:startColor="#ff0000"
? ? android:centerColor="#00ff00"
? ? android:endColor="#0000ff"
? ? android:gradientRadius="100"/>必須加上這個才可以有效不然沒有效果
掃描式漸變
<gradient
? ? android:type="sweep"
? ? android:startColor="#ff0000"
? ? android:centerColor="#00ff00"
? ? android:endColor="#0000ff"/>
(2) andorid;angle(僅對線性漸變有效)
(3) android:centerX和android:centerY
centerX嗦嗡、centerY兩個屬性用于設(shè)置漸變的中心點位置侥祭,僅當漸變類型為放射漸變時有效矮冬,類型為分數(shù)或小數(shù)吆录,不接受Dimension恢筝。默認值是0.5撬槽,有效值是0.0~1.0侄柔,超出該范圍后會看不出漸變效果移剪。centerX纵苛、centerY的取值其實是寬和高的百分比
(4) android:uselevel
useLevel屬性通常不使用。該屬性用于指定是否將該shape當成一個LevelListDrawable來使用,默認值為false陷谱。
stroke 描邊屬性
<stroke
? ? android:color="#000000" 描邊顏色
? ? android:width="10dp" 描邊寬度
? ? android:dashGap="1dp" 虛線的寬度,當為0時是實線
? ? android:dashWidth="100dp" 虛線的間隔
? ? />
size和padding 圖形大小和內(nèi)邊距 因為控件本身也有這兩個屬性? 所以基本上不需用設(shè)置