Android開發 Shape詳細解讀

2021-08-30 08:38:52 字數 3846 閱讀 6075

日常開發中,我們會遇到一些button、textview...等控制項的背景是圓角矩形、圓形...等,和android預設的控制項背景矩形不一致,此時shape的作用就體現出來了,我們可以根據shape屬性畫出很多我們意想不到的背景圖案,下面我會把所有shape的屬性都介紹一下。本文參考自

android:shape

rectangle: 矩形,預設的形狀,可以畫出直角矩形、圓角矩形、弧形等

oval: 橢圓形,用得比較多的是畫正圓

line: 線形,可以畫實線和虛線

ring: 環形,可以畫環形進度條

android:tint:給shape著色

android:tintmode:著色模式(有關tint和tintmode請參看文章:

android:dither:將在位圖的畫素配置與螢幕不同時(例如:argb 8888 點陣圖和 rgb 565 螢幕)啟用點陣圖的抖動;值為「false」時則停用抖動。預設值為 true。

android:visible:暫時還不清楚控制什麼隱藏。

android:uselevel:如果為true,則可在levellistdrawable中使用。這通常應為「false」,否則形狀不會顯示。

android:thickness:環的厚度,指內環與外環的環間距。(只適用於shape為ring)

android:thicknessratio:浮點型,以環的寬度比率來表示環的厚度,預設為9,表示環的厚度為環的寬度除以9,該值會被android:thickness覆蓋(只適用於shape為ring)

android:innerratio:內環半徑(只適用於shape為ring)

android:innerradiusratio:浮點型,以環的寬度比率來表示內環的半徑,預設為3,表示內環半徑為環的寬度除以3,該值會被android:innerradius覆蓋(只適用於shape為ring)

android:height:高度

android:width:寬度

注意事項:只有控制項寬高設定成wrap_content時,此處寬高才起作用,但是起到的卻是最小寬高值。也就是說,當控制項寬高超過你此處指定的值時,它會變化(wrap_content!!!)

android:color:指定色值

android:left:左內邊距

android:top:上內邊距

android:right:右內邊距

android:bottom:左內邊距

android:radius:       四個角圓角

android:topleftradius:   左上角的圓角

android:toprightradius:   右上角的圓角

android:bottomleftradius:  左下角的圓角

android:bottomrightradiusleft:右下角的圓角

注意事項:radius屬性值可以被其他四個屬性覆蓋。

android:color:     邊界線的顏色

android:width:    邊界線的寬度      

android:dashwidth:  段虛線的寬度(可以將邊界線理解成一段段線無間隔的連線)

android:dashgap:   段虛線的間隔

android:type:漸變的型別

linear:線性漸變,預設的漸變型別

radial:放射漸變,設定該項時,必須設定android:gradientradius漸變半徑屬性

sweep:掃瞄性漸變                            

android:angle:漸變的角度,線性漸變時(linear也是預設的漸變型別)才有效,必須是45的倍數,0表示從左到右,90表示從下到上    

android:centerx:漸變中心的相對x座標,放射漸變時(radial)才有效,在0.0到1.0之間,預設為0.5,表示在正中間  

android:centery:漸變中心的相對x座標,放射漸變時(radial才有效,在0.0到1.0之間,預設為0.5,表示在正中間

android:uselevel:如果為true,則可在levellistdrawable中使用。這通常應為「false」,否則形狀不會顯示。

android:startcolor:漸變開始的顏色

android:centercolor:漸變中間的顏色

android:endcolor:漸變結束的顏色

android:gradientradius:漸變的半徑,只有漸變型別為radial時才使用

至此,所有有關shape屬性以及子標籤的屬性全部介紹完畢。

下面讓我們看一下,實際應用時候的注意事項

畫虛線時,有幾點特性必須要知道的:

只能畫水平線,畫不了豎線;

線的高度是通過stroke的android:width屬性設定的;

size的android:height屬性定義的是整個形狀區域的高度;(前提是控制項view沒有設定layout_height屬性值,即為wrap_content)

size的height必須大於stroke的width,否則,線無法顯示;(與3同前提,否則就是size的height必須大於控制項的height)

線在整個形狀區域中是居中顯示的;

線左右兩邊會留有空白間距,線越粗,與stroke的dashwidth的值相關。

引用虛線的view必須新增屬性android:layertype,值設為"software",否則顯示不了虛線。

畫圓環時,有幾點特性必須要知道的:

1.必須在shape根標籤下指定shape的型別為ring。

2.預設情況下,innerradiusratio值為3,thicknessratio值為9,但是這兩個比率可以分別被innerradius、thickness覆蓋。

3.預設情況下,圓環內徑是圓環厚度的三倍。

4.當只指定了圓環內徑或者圓環厚度其中的任何乙個屬性時,兩者之間的3倍關係都將不在存在,另乙個屬性仍會用預設情況下的值。(畫圓環必須同時指定圓環內徑和圓環厚度)

5.當同時指定了圓環內徑和圓環厚度時,那麼這兩者預設的3倍關係將不存在了,而是按照你指定的屬性值畫圓環。

效果圖:

1  2  

android開發之shape詳解

首先,使用shape畫的圖形,這個xml檔案的根節點是shape,如下 shape取值有四種,可以是rectangle 長方形 oval 橢圓 line 線條 ring 圓環 如果設定的話預設是長方形,只有當我們要畫的圖形是ring的時候,下面這幾個屬性才會生效 android innerradiu...

Android開發 EditText屬性詳解

1 edittext輸入的文字為密碼形式的設定 1 通過.xml裡設定 2 在 裡設定 通過設定edittext的settransformationmethod 方法來實現隱藏密碼或這顯示密碼。2 edittext輸入的文字為 號碼 3 edittext字數限制的設定 4 edittext設定字型 ...

Android中shape的使用

本人在美工方面一直是比較白痴的,對於一些顏色什麼亂七八糟的非常頭痛,但是在android程式設計中這又是經常涉及到的東西,沒辦法,只有硬著頭皮上。android中常常使用shape來定義控制項的一些顯示屬性,今天看了一些shape的使用,對shape有了大體的了解,稍作總結 先看下面的 solid ...