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