android shape的基礎知識

2021-10-01 04:47:24 字數 3391 閱讀 1791

最近在重構公司的專案,發現裡面有大量的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 ...