最近在重構公司的專案,發現裡面有大量的png,而且一些簡單的圖示也用png,無形中使得專案的體積增大了,於是決心使用android中的shape去替代那些簡單圖示的png,於是有了這一篇學習筆記。
一般使用shape首先會在drawable目錄下新建乙個xml資源檔案,android studio常常預設是selector標籤(下節再學習),所以要改為需要的shape標籤。使用shape可以自定義形狀,可以定義下面四種型別的形狀,通過android:shape屬性指定所需的形狀:
rectangle: 矩形,shape標籤預設的形狀,可以畫出直角矩形、圓角矩形、弧形等;
oval: 橢圓形,用得比較多的是畫正圓;
line: 線形,可以畫實線和虛線;
ring: 環形,可以畫環形進度條。
如專案中用到的乙個例子:
<
?xml version=
"1.0" encoding=
"utf-8"
?>
""android:shape=
"rectangle"
>
<
!--顏色--
>
"@color/colorprimary"
/>
<
!--大小--
>
"5dp" android:width=
"50dp"
/>
<
/shape>
下面學習這些形狀可設定的一些屬性:
<
!--android:left 左內間距,android:right 右內間距,android:top 上內間距,android:bottom 下內間距--
>
android:bottom=
"5dp"
android:left=
"10dp"
android:right=
"10dp"
android:top=
"5dp"
/>
<
!--android:type 漸變的型別,有sweep、radial、linear三種型別
linear 線性漸變,預設的漸變型別
radial 放射漸變,設定該項時,android:gradientradius也必須設定
sweep 掃瞄性漸變;
android:startcolor 漸變開始的顏色
android:endcolor 漸變結束的顏色
android:centercolor 漸變中間的顏色
android:angle 漸變的角度,線性漸變時才有效,必須是45的倍數,0表示從左到右,90表示從下到上
android:centerx 漸變中心的相對x座標,放射漸變時才有效,在0.0到1.0之間,預設為0.5,表示在正中間
android:centery 漸變中心的相對x座標,放射漸變時才有效,在0.0到1.0之間,預設為0.5,表示在正中間
android:gradientradius 漸變的半徑,只有漸變型別為radial時才使用
android:uselevel 如果為true,則可在levellistdrawable中使用--
>
android:angle=
"135"
android:centercolor=
"#009688"
android:endcolor=
"#00695c"
android:startcolor=
"#4db6ac"
android:type=
"linear"
/>
<
!--android:radius 圓角半徑,會被下面每個特定的圓角屬性重寫
android:topleftradius 左上角的半徑
android:toprightradius 右上角的半徑
android:bottomleftradius 左下角的半徑
android:bottomrightradius 右下角的半徑--
>
android:bottomleftradius=
"5dp"
android:bottomrightradius=
"5dp"
android:topleftradius=
"3dp"
android:toprightradius=
"3dp"
/>
<
!--android:color 描邊的顏色
android:width 描邊的寬度
android:dashwidth 設定虛線時的橫線長度
android:dashgap 設定虛線時的橫線之間的距離--
>
android:width=
"1dp"
android:color=
"@color/colorprimary"
/>
注意:
line型別: 主要用於畫分割線,是通過stroke和size特性組合來實現。
只能畫水平線,畫不了豎線;
線的高度是通過stroke的android:width屬性設定的;
size的android:height屬性定義的是整個形狀區域的高度;
size的height必須大於stroke的width,否則,線無法顯示;
線在整個形狀區域中是居中顯示的;
線左右兩邊會留有空白間距,線越粗,空白越大;
引用虛線的view需要新增屬性android:layertype,值設為"software",否則顯示不了虛線。
ring型別特有的屬性:
android:innerradius內環的半徑
android:innerradiusratio浮點型,以環的寬度比率來表示內環的半徑,預設為3,表示內環半徑為環的寬度除以3,該值會被android:innerradius覆蓋
android:thickness環的厚度
android:thicknessratio浮點型,以環的寬度比率來表示環的厚度,預設為9,表示環的厚度為環的寬度除以9,該值會被android:thickness覆蓋
android:uselevel一般為false,否則可能環形無法顯示,只有作為levellistdrawable使用時才設為true
本次學習記錄到此結束。
android shape的使用 邊框
android中常常使用shape來定義控制項的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結 先寫drawable裡面的xml檔案,裡面設定shape來設定文字框的特殊效果。olid 實心,就是填充的意思 android color指定填充的顏色 gradient...
android shape的使用詳解
shape的屬性大全 預設為rectangle 虛線間隔寬度 注意 一 1 android radius,半 徑,會被下邊的單個角度半徑屬性覆蓋,預設為1dp,2 在使用時,如果單獨設定四個角度,又大小不一致時,eclipse的graphics preview會報錯。但是直接真機執行即可。比如實在線...
Android shape使用詳解
一 在res drawable資料夾下建立乙個名為gradient box的xml檔案 xmlns android android shape rectangle android radius 8dp android topleftradius 5dp android toprightradius ...