Android樣式shape

  • 一般用shape定義的xml文件存放在drawable目錄下
  • 使用shape可以自定義形狀胧华,可以定義下面四種類型的形狀
rectangle: 矩形,默認(rèn)的形狀蹲堂,可以畫(huà)出直角矩形梁丘、圓角矩形择浊、弧形等
oval: 橢圓形,用得比較多的是畫(huà)正圓
line: 線形范咨,可以畫(huà)實(shí)線和虛線
ring: 環(huán)形,可以畫(huà)環(huán)形進(jìn)度條

rectangle

    rectangle是默認(rèn)的形狀厂庇,也是用得最多的形狀渠啊,一些文字背景、按鈕背景权旷、控件或布局背景等
//填充色
solid: 設(shè)置形狀填充的顏色替蛉,只有android:color一個(gè)屬性

android:color 填充的顏色

//內(nèi)間距
padding: 設(shè)置內(nèi)容與形狀邊界的內(nèi)間距,可分別設(shè)置左右上下的距離

android:left 左內(nèi)間距
android:right 右內(nèi)間距
android:top 上內(nèi)間距
android:bottom 下內(nèi)間距

//漸變色
gradient: 設(shè)置形狀的漸變顏色拄氯,可以是線性漸變躲查、輻射漸變、掃描性漸變

android:type 漸變的類型
    linear 線性漸變译柏,默認(rèn)的漸變類型
    radial 放射漸變镣煮,設(shè)置該項(xiàng)時(shí),android:gradientRadius也必須設(shè)置
    sweep 掃描性漸變
android:startColor 漸變開(kāi)始的顏色
android:endColor 漸變結(jié)束的顏色
android:centerColor 漸變中間的顏色
android:angle 漸變的角度鄙麦,線性漸變時(shí)才有效典唇,必須是45的倍數(shù),0表示從左到右黔衡,90表示從下到上
android:centerX 漸變中心的相對(duì)X坐標(biāo)蚓聘,放射漸變時(shí)才有效腌乡,在0.0到1.0之間盟劫,默認(rèn)為0.5,表示在正中間
android:centerY 漸變中心的相對(duì)X坐標(biāo)与纽,放射漸變時(shí)才有效侣签,在0.0到1.0之間,默認(rèn)為0.5急迂,表示在正中間
android:gradientRadius 漸變的半徑影所,只有漸變類型為radial時(shí)才使用
android:useLevel 如果為true,則可在LevelListDrawable中使用

//圓角
corners: 設(shè)置圓角僚碎,只適用于rectangle類型猴娩,可分別設(shè)置四個(gè)角不同半徑的圓角,當(dāng)設(shè)置的圓角半徑很大時(shí)勺阐,比如200dp卷中,就可變成弧形邊了

android:radius 圓角半徑,會(huì)被下面每個(gè)特定的圓角屬性重寫(xiě)
android:topLeftRadius 左上角的半徑
android:topRightRadius 右上角的半徑
android:bottomLeftRadius 左下角的半徑
android:bottomRightRadius 右下角的半徑

//實(shí)線或虛線
stroke: 設(shè)置描邊渊抽,可描成實(shí)線或虛線

android:color 描邊的顏色
android:width 描邊的寬度
android:dashWidth 設(shè)置虛線時(shí)的橫線長(zhǎng)度
android:dashGap 設(shè)置虛線時(shí)的橫線之間的距離
<?xml version="1.0" encoding="utf-8"?>
<!-- android:shape指定形狀類型蟆豫,默認(rèn)為rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- solid指定形狀的填充色,只有android:color一個(gè)屬性 -->
    <solid android:color="#2F90BD" />
    <!-- padding設(shè)置內(nèi)容區(qū)域離邊界的間距 -->
    <padding
        android:bottom="12dp"
        android:left="12dp"
        android:right="12dp"
        android:top="12dp" />
    <!-- corners設(shè)置圓角懒闷,只適用于rectangle -->
    <corners android:radius="200dp" />
    <!-- stroke設(shè)置描邊 -->
    <stroke
        android:width="2dp"
        android:color="@android:color/darker_gray"
        android:dashGap="4dp"
        android:dashWidth="4dp" />
</shape>

oval

    oval用來(lái)畫(huà)橢圓十减,而在實(shí)際應(yīng)用中栈幸,更多是畫(huà)正圓,比如消息提示帮辟,圓形按鈕等
<?xml version="1.0" encoding="utf-8"?>
<!-- android:shape指定形狀類型 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!-- padding設(shè)置內(nèi)間距 -->
    <padding
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:top="4dp" />
    <!-- size設(shè)置形狀的大小 -->
    <size
        android:width="40dp"
        android:height="40dp" />
    <!-- gradient設(shè)置漸變 -->
    <gradient
        android:endColor="#000000"
        android:gradientRadius="40dp"
        android:startColor="#FFFFFF"
        android:type="radial" />
</shape>

line

    line主要用于畫(huà)分割線速址,是通過(guò)stroke和size特性組合來(lái)實(shí)現(xiàn)的
畫(huà)線時(shí),有幾點(diǎn)特性必須要知道的:

1.只能畫(huà)水平線由驹,畫(huà)不了豎線壳繁;
2.線的高度是通過(guò)stroke的android:width屬性設(shè)置的;
3.size的android:height屬性定義的是整個(gè)形狀區(qū)域的高度荔棉;
4.size的height必須大于stroke的width闹炉,否則,線無(wú)法顯示润樱;
5.線在整個(gè)形狀區(qū)域中是居中顯示的渣触;
6.線左右兩邊會(huì)留有空白間距,線越粗壹若,空白越大嗅钻;
7.引用虛線的view需要添加屬性android:layerType,值設(shè)為"software"店展,否則顯示不了虛線
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <!-- 實(shí)際顯示的線 -->
    <stroke
        android:width="1dp"
        android:color="#2F90BD"
        android:dashGap="2dp"
        android:dashWidth="4dp" />
    <!-- 形狀的高度 -->
    <size android:height="4dp" />
</shape>

ring

shape根元素有些屬性只適用于ring類型,以下這些屬性:

android:innerRadius 內(nèi)環(huán)的半徑
android:innerRadiusRatio 浮點(diǎn)型养篓,以環(huán)的寬度比率來(lái)表示內(nèi)環(huán)的半徑,默認(rèn)為3赂蕴,表示內(nèi)環(huán)半徑為環(huán)的寬度除以3柳弄,該值會(huì)被android:innerRadius覆蓋
android:thickness 環(huán)的厚度
android:thicknessRatio 浮點(diǎn)型,以環(huán)的寬度比率來(lái)表示環(huán)的厚度概说,默認(rèn)為9碧注,表示環(huán)的厚度為環(huán)的寬度除以9,該值會(huì)被android:thickness覆蓋
android:useLevel 一般為false糖赔,否則可能環(huán)形無(wú)法顯示萍丐,只有作為L(zhǎng)evelListDrawable使用時(shí)才設(shè)為true
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="3"
    android:shape="ring"
    android:thicknessRatio="9"
    android:useLevel="false">
    <gradient
        android:endColor="#2F90BD"
        android:startColor="#FFFFFF"
        android:type="sweep" />
    <stroke
        android:width="1dp"
        android:color="@android:color/black" />
</shape>
  • 如果想讓這個(gè)環(huán)形旋轉(zhuǎn)起來(lái),變成可用的進(jìn)度條放典,則只要在shape外層包多一個(gè)rotate元素就可以了
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="1080.0">
    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">
        <gradient
            android:endColor="#2F90BD"
            android:startColor="#FFFFFF"
            android:type="sweep" />
    </shape>
</rotate>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逝变,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奋构,更是在濱河造成了極大的恐慌壳影,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件声怔,死亡現(xiàn)場(chǎng)離奇詭異态贤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)醋火,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)悠汽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箱吕,“玉大人,你說(shuō)我怎么就攤上這事柿冲〔绺撸” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵假抄,是天一觀的道長(zhǎng)怎栽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)宿饱,這世上最難降的妖魔是什么熏瞄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮谬以,結(jié)果婚禮上强饮,老公的妹妹穿的比我還像新娘。我一直安慰自己为黎,他們只是感情好邮丰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著铭乾,像睡著了一般剪廉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炕檩,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天斗蒋,我揣著相機(jī)與錄音,去河邊找鬼捧书。 笑死吹泡,一個(gè)胖子當(dāng)著我的面吹牛骤星,可吹牛的內(nèi)容都是我干的经瓷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洞难,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舆吮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起队贱,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤色冀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后柱嫌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锋恬,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年编丘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了与学。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彤悔。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖索守,靈堂內(nèi)的尸體忽然破棺而出晕窑,到底是詐尸還是另有隱情,我是刑警寧澤卵佛,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布杨赤,位于F島的核電站,受9級(jí)特大地震影響截汪,放射性物質(zhì)發(fā)生泄漏疾牲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一衙解、第九天 我趴在偏房一處隱蔽的房頂上張望说敏。 院中可真熱鬧,春花似錦丢郊、人聲如沸盔沫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)架诞。三九已至,卻和暖如春干茉,著一層夾襖步出監(jiān)牢的瞬間谴忧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工角虫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沾谓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓戳鹅,卻偏偏與公主長(zhǎng)得像均驶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枫虏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容