Android利用shape實現(xiàn)各種簡單的形狀
一,概述
我們在android開發(fā)中經(jīng)常要用到圖片,而一些簡單的圖片我們完全可以用shape形狀drawable資源代替,使用shape有一個好處就是可以減小我們apk的大小,因為同樣的效果,shape比圖片更節(jié)省空間,好了,我們廢話不多說,下面進入正題。
二,shape初識
shape是android drawable資源中的一個重要的角色,drawable資源覆蓋面廣,它不僅代表圖片,它可以是一個顏色,一個形狀,因為shape其簡單實用,下面我們來看一下shape形狀的分類:
ectangle:
rectangle代表者矩形,它是shape默認的形狀類型,即如果我們不在shape的android:shape屬性指定其類型時,默認是矩形,用它我們可以畫一個矩形,圓角矩形,具體在下面會說道
oval:
ovel,橢圓,用它可以畫橢圓,圓
line:
水平線,在使用該形狀的時候,我們得給它指定stroke元素指定其寬度,不然在使用該形狀的時候會報空指針異常
ring:
環(huán)形
下面我們來用上面說道的各種形狀畫圖形,打造各種簡單的形狀
三,shape的使用
下面看看用shape畫的一些簡單的圖形,之后我會按照圖形說一下shape的各種屬性以及一些要注意的問題:
1.實心長方形
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 設(shè)置固定填充色 --> <solid android:color="#f00" /> <size android:width="60dp" android:height="30dp"/> </shape>
2.炫彩實心長方形
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"></gradient> </shape>
3.長方形外框
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊 --> <stroke android:width="2dp" android:color="#f00" ></stroke> </shape>
4.虛線長方形外框
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊 --> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke> </shape>
5.橢圓虛線外框
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊 --> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke> <corners android:radius="15dp"/> </shape>
6.實心長方體切圓角
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 設(shè)置固定填充色 --> <solid android:color="#f00" /> <size android:width="60dp" android:height="30dp"/> <corners android:radius="10dp"/> </shape>
7.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f" android:gradientRadius="60" android:type="radial"></gradient> </shape>
8.
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊 --> <stroke android:width="2dp" android:color="#f00" ></stroke> <corners android:radius="15dp"/> </shape>
9.
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f" android:type="sweep"></gradient> </shape>
10.
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊 --> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke> <corners android:radius="15dp" android:topRightRadius="0dp" android:bottomRightRadius="0dp"/> </shape>
11.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 設(shè)置固定填充色 --> <solid android:color="#f00" /> <size android:width="60dp" android:height="30dp"/> </shape>
12.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置漸變色 --> <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"></gradient> </shape>
13.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊色 --> <stroke android:width="2dp" android:color="#f00" ></stroke> </shape>
14.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#f00" android:centerColor="#0f0" android:endColor="#00f" android:gradientRadius="60" android:type="sweep"></gradient> </shape>
15.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <size android:width="60dp" android:height="30dp"/> <!-- 設(shè)置描邊色 --> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke> </shape>
16.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="20dp" android:shape="ring" android:thickness="2dp" android:useLevel="false" > <!-- 設(shè)置固定填充色 --> <solid android:color="#f00" /> <size android:height="44dp" /> </shape>
17.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="20dp" android:shape="ring" android:thickness="2dp" android:useLevel="false" > <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/> <size android:height="44dp" /> </shape>
18.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="20dp" android:shape="ring" android:thickness="2dp" android:useLevel="false" > <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/> <size android:height="44dp" /> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"/> </shape>
19.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="20dp" android:shape="ring" android:thickness="2dp" android:useLevel="false" > <size android:height="44dp" /> <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"/> </shape>
20.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadius="20dp" android:shape="ring" android:innerRadiusRatio="8" android:useLevel="false" > <!-- 設(shè)置漸變填充色 --> <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"/> <size android:height="44dp" /> </shape>
21.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#f00"/> <size android:height="2dp"></size> </shape>
22.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#f00"/> <size android:height="10dp"></size> </shape>
23.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <stroke android:dashGap="8px" android:dashWidth="8px" android:width="1dp" android:color="#f00" /> <size android:height="30dip" /> </shape>
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Android自定義PopupWindow仿點擊彈出分享功能
這篇文章主要為大家詳細介紹了Android自定義PopupWindow仿點擊彈出分享功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02基于DownloadManager的簡單下載器編寫小結(jié)
Android自帶的DownloadManager是一個很好的下載文件的工具。該類在API level 9之后出現(xiàn),它已經(jīng)幫我們處理了下載失敗、重新下載等功能,整個下載過程全部交給系統(tǒng)負責,不需要我們過多的處理,非常的nice。關(guān)鍵的是用起來也很簡單,稍微封裝一下就可以幾句話搞定下載2017-12-12Android學(xué)習教程之下拉刷新實現(xiàn)代碼(11)
這篇文章主要為大家詳細介紹了Android學(xué)習教程之下拉刷新實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11使用Retrofit下載文件并實現(xiàn)進度監(jiān)聽的示例
這篇文章主要介紹了使用Retrofit下載文件并實現(xiàn)進度監(jiān)聽的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08Android 6.0動態(tài)權(quán)限申請教程
本文主要介紹了Android 6.0動態(tài)權(quán)限申請的教程,具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03Android自定義View實現(xiàn)數(shù)獨游戲
這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)數(shù)獨游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12Android編程實現(xiàn)webview執(zhí)行l(wèi)oadUrl時隱藏鍵盤的workround效果
這篇文章主要介紹了Android編程實現(xiàn)webview執(zhí)行l(wèi)oadUrl時隱藏鍵盤的workround效果,較為詳細的分析了執(zhí)行l(wèi)oadUrl時隱藏鍵盤的workround具體步驟與兩種實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10C/C++在Java、Android和Objective-C三大平臺下實現(xiàn)混合編程
本文主要介紹C/C++在Java、Android和Objective-C三大平臺下實現(xiàn)混合編程,這里舉例說明實現(xiàn)不同平臺用C/C++實現(xiàn)編程的方法,有興趣的小伙伴可以參考下2016-08-08