生活随笔
收集整理的這篇文章主要介紹了
android开发之shape详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
很多時(shí)候,使用shape能夠?qū)崿F(xiàn)的效果,你用一張圖片也能夠?qū)崿F(xiàn),但問(wèn)題是一張圖片無(wú)論你怎么壓縮,它都不可能比一個(gè)xml文件小,因此,為了獲得一個(gè)高性能的手機(jī)App,我們?cè)陂_發(fā)中應(yīng)該遵循這樣一個(gè)原則:能夠用shape實(shí)現(xiàn)的效果盡量不使用圖片來(lái)實(shí)現(xiàn)。
今天我們就一起來(lái)看看shape的使用。
首先,使用shape畫的圖形,這個(gè)xml文件的根節(jié)點(diǎn)是shape,如下:
?
[java]?view plaincopyprint?
<span?style="font-size:14px;"><shape?xmlns:android="http://schemas.android.com/apk/res/android"??????android:shape="rectangle|oval|line|ring"?>??</span><pre?name="code"?class="java"><span?style="font-size:14px;"><shape</span>></pre>?? ?
shape取值有四種,可以是rectangle(長(zhǎng)方形),oval(橢圓),line(線條),ring(圓環(huán)),如果設(shè)置的話默認(rèn)是長(zhǎng)方形,只有當(dāng)我們要畫的圖形是ring的時(shí)候,下面這幾個(gè)屬性才會(huì)生效:
?
android:innerRadius:內(nèi)環(huán)的半徑。android:innerRadiusRatio:內(nèi)環(huán)的比例,比如這個(gè)值為2,那么內(nèi)環(huán)的半徑就為環(huán)半徑除以2,如果設(shè)置了第一個(gè)屬性,則這個(gè)屬性不起作用。android:thickness:環(huán)的厚度。android:thicknessRatio:環(huán)的厚度比例,比如這個(gè)值為2,那么環(huán)的厚度就為環(huán)半徑除以2,如果設(shè)置了第三個(gè)屬性,則這個(gè)屬性不起作用。android:useLevel:只有當(dāng)我們的shape使用在LevelListDrawable中的時(shí)候,這個(gè)值為true,否則為false。?
以上是shape節(jié)點(diǎn),在shape節(jié)點(diǎn)中我們還可以定義其他的節(jié)點(diǎn):
?
圓角:
?
[java]?view plaincopyprint?
<span?style="font-size:14px;"><corners???????android:radius="20dp"??????android:topLeftRadius="20dp"??????android:topRightRadius="20dp"??????android:bottomLeftRadius="0dp"??????android:bottomRightRadius="0dp"??????/></span>??
android:radius表示長(zhǎng)方形四個(gè)角的半徑,當(dāng)然也可以每個(gè)角單獨(dú)設(shè)定,后面單獨(dú)設(shè)定的圓角半徑會(huì)覆蓋android:radius。
?
?
漸變:
?
[java]?view plaincopyprint?
<span?style="font-size:14px;">????<gradient??????????android:angle="90"??????????android:centerColor="#9ACD32"??????????android:endColor="#9AC0CD"??????????android:startColor="#9AFF9A"??????????android:type="linear"??????????android:useLevel="false"?/></span>?? ?
?
android:angle="90"表示漸變的起始位置,這個(gè)值必須為45的倍數(shù),包括0,0表示從左往右漸變,逆時(shí)針旋轉(zhuǎn),依次是45,90,135.....,90表示從下往上漸變,270表示從上往下漸變,剩下的大家依次去推理。android:startColor="#9AFF9A",表示漸變的起始顏色android:centerColor="#9ACD32"表示漸變的過(guò)渡顏色android:endColor="#9AC0CD"表示漸變的結(jié)束顏色type表示漸變的類型,有三種,分別是linear(線性變化),radial(輻射漸變)以及sweep(掃描漸變)當(dāng)type為radial時(shí),我們要設(shè)置android:gradientRadius="",這個(gè)表示漸變的半徑(線性漸變和掃描漸變不需要設(shè)置) 填充:
?
[java]?view plaincopyprint?
<span?style="font-size:14px;"><solid?android:color="#ADFF2F"?/></span>??
這個(gè)比較簡(jiǎn)單,不多說(shuō)。
?
?
描邊:
?
[java]?view plaincopyprint?
<span?style="font-size:14px;color:#000000;"><stroke???????android:width="1dp"??????android:color="#FFFF00"??????android:dashWidth="15dp"??????android:dashGap="5dp"??????/></span>?? ?
?
android:dashWidth表示虛線的寬度android:dashGap表示虛線之間的間隔以上兩個(gè)屬性如果不設(shè)置則為實(shí)線?
大小:
?
?
[java]?view plaincopyprint?
<span?style="font-size:14px;"><size???????android:width="1dp"??????android:height="1dp"??????/></span>??
這個(gè)表示該shape的大小,默認(rèn)情況下,shape的大小與它所在的容器大小成正比。如果我們?cè)贗mageView中使用這個(gè)shape,那么可以通過(guò)android:scaleType="center"屬性來(lái)限制這種縮放。
?
當(dāng)然,還有一種padding,這和我們?cè)趚ml文件中用的一樣,我這里就不多說(shuō)了。
?
最后,基于以上幾種特性,我做了以下幾種效果供大家參考。
?
?
示例效果代碼下載https://github.com/lenve/shape
非常炫的效果
轉(zhuǎn)載于:https://www.cnblogs.com/earl-yongchang/p/4929407.html
總結(jié)
以上是生活随笔為你收集整理的android开发之shape详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。