Android形狀圖形與狀態(tài)列表圖形及九宮格圖片超詳細講解
一、圖形Drawable
Drawable類型表達了各種各樣的圖形,包括圖片、色塊、畫板、背景等。
包含圖片在內(nèi)的圖形文件放在res目錄的各個drawable目錄下,其中drawable目錄一般保存描述性的XML文件,而圖片文件一般放在具體分辨率的drawable目錄下。
各視圖的background屬性、ImageView和ImageButton的src屬性、TextView和Button四個方向的drawable***系列屬性都可以引用圖形文件。
二、形狀圖形
Shape圖形又稱形狀圖形,它用來描述常見的幾何形狀,包括矩形、圓角矩形、圓形、橢圓等。
形狀圖形的定義文件是以Shape標(biāo)簽為根節(jié)點的XML描述文件。
實際開發(fā)一般主要使用3個節(jié)點:stroke、corners、solid。
1、類型的形狀:
- rectangle:矩形,默認(rèn)
- oval:橢圓,此時corners節(jié)點失效
- line:直線,此時必須設(shè)置stroke節(jié)點,不然報錯
- ring:圓環(huán)
2、size(尺寸)
size是shape的下級節(jié)點,它描述了形狀圖形的寬高尺寸,若無size節(jié)點,則表示寬高與宿主視圖一樣大小,下面是size節(jié)點的常用屬性說明:
- height:像素類型,圖形高度。
- width:像素類型,圖形寬度。
3、stroke(描邊)
stroke是shape的下級節(jié)點,它描述了形狀圖形的描邊規(guī)格,若無stroke節(jié)點,則表示不存在描邊,下面是stroke節(jié)點的常用屬性說明:
- color:顏色類型,描邊的顏色。
- dashGap:像素類型,每段虛線之間的間隔。
- dashWidth:像素類型,每段虛線的寬度,若dashGap和dashWidth有一個值為0,則描邊為實線。
- wdith:像素類型,描邊的厚度。
4、corners(圓角)
corners是shape的下級節(jié)點,它描述了形狀圖形的圓角大小,若無corners節(jié)點,則表示無圓角,下面是常用屬性:
- bottomLeftRadius:坐下圓角的半徑。
- bottomRightRadius:右下圓角的半徑。
- topLeftRadius:左上圓角的半徑。
- topRightRadius:右上圓角的半徑。
- radius:四個圓角的半徑。
5、solid(填充)
solid是shape的下級節(jié)點,它描述了形狀圖形的填充色彩,若無solid節(jié)點,則表示無填充顏色,下面的屬性說明:
- color:內(nèi)部填充的顏色。
6、padding(間隔)
padding是shape的下級節(jié)點,它描述了形狀圖形與周圍邊界的間隔,若無padding節(jié)點,則表示四周不設(shè)間隔,下面的常用屬性:
- top:與上方的間隔。
- bottom:與下方的間隔。
- left:與左邊的間隔。
- right:與右邊的間隔。
7、gradient(漸變)
gradient是shape的下級節(jié)點,它描述了形狀圖形的顏色漸變,若無gradient節(jié)點,則表示沒有漸變效果,下面的常用屬性:
- angle:整型,漸變的起始角度,為0表示9點鐘位置,增值大表示往逆時針方向旋轉(zhuǎn)。
- type:漸變類型。
| 漸變類型 | 說明 |
| linear | 線性漸變,默認(rèn) |
| radial | 放射漸變,起始顏色就是圓心顏色 |
| sweep | 滾動漸變,即一個線段以某個端點為圓心做360°旋轉(zhuǎn) |
- centerX:浮點型,圓心的X坐標(biāo),type=linear時不可用。
- centerY:浮點型,圓心的Y坐標(biāo),type=linear時不可用。
- gradientRadius:整型,漸變半徑,type=radial時需要設(shè)置。
- centerColor:漸變的中間顏色。
- startColor:漸變的起始顏色。
- endColor:漸變的終止顏色。
- useLevel:布爾類型,設(shè)置為true為無漸變色。
例:點擊按鈕切換圖形
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:id="@+id/v_content"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_rect"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="圓角矩形"/>
<Button
android:id="@+id/btn_oval"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="橢圓矩形"/>
</LinearLayout>
</LinearLayout>drawable下新建rect.xml文件
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--指定形狀內(nèi)部的填充顏色-->
<solid android:color="#ffdd66"/>
<!-- 指定形狀輪廓的粗細與顏色-->
<stroke android:width="1dp"
android:color="#aaaaaa"/>
<!-- 指定形狀四個圓角的半徑-->
<corners android:radius="10dp"/>
</shape>oval.xml文件
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!--指定形狀內(nèi)部的填充顏色-->
<solid android:color="#ff66aa"/>
<!-- 指定形狀輪廓的粗細與顏色-->
<stroke android:width="1dp"
android:color="#aaaaaa"/>
</shape>java代碼
public class DrawableShapeActivity extends AppCompatActivity implements View.OnClickListener {
private View v_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawable_shape);
v_content = findViewById(R.id.v_content);
findViewById(R.id.btn_rect).setOnClickListener(this);
findViewById(R.id.btn_oval).setOnClickListener(this);
//v_content的背景設(shè)置為圓角矩形
v_content.setBackgroundResource(R.drawable.shape_rect_gold);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_rect:
v_content.setBackgroundResource(R.drawable.shape_rect_gold);
break;
case R.id.btn_oval:
v_content.setBackgroundResource(R.drawable.shape_oval_rose);
break;
}
}
}運行結(jié)果:


三、九宮格圖片
將某張圖片設(shè)置成視圖背景時,如果圖片尺寸太小,則會自動拉伸使之填滿背景,但圖片拉的過大,會變得模糊。
使用九宮格圖片:將圖片后綴改為.9.png

四、狀態(tài)列表圖形
Button按鈕的背景在正常情況下是凸起的,在按下時是凹陷的,從按下到彈起的過程,用戶便能知道點擊了這個按鈕。
例:
當(dāng)按鈕被按下時使用的是第一個item的圖片
<item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/button_normal"/>
狀態(tài)類型的取值說明
狀態(tài)列表圖形不僅用于按鈕控件,還可用于其他擁有多種狀態(tài)的控件。

到此這篇關(guān)于Android形狀圖形與狀態(tài)列表圖形及九宮格圖片超詳細講解的文章就介紹到這了,更多相關(guān)Android形狀圖形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于DownloadManager的簡單下載器編寫小結(jié)
Android自帶的DownloadManager是一個很好的下載文件的工具。該類在API level 9之后出現(xiàn),它已經(jīng)幫我們處理了下載失敗、重新下載等功能,整個下載過程全部交給系統(tǒng)負責(zé),不需要我們過多的處理,非常的nice。關(guān)鍵的是用起來也很簡單,稍微封裝一下就可以幾句話搞定下載2017-12-12
Android中利用NetworkInfo判斷網(wǎng)絡(luò)狀態(tài)時出現(xiàn)空指針(NullPointerException)問題的解決
這篇文章主要介紹了Android中利用NetworkInfo判斷網(wǎng)絡(luò)狀態(tài)時出現(xiàn)空指針(NullPointerException)問題的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-11-11
Android數(shù)據(jù)加密之異或加密算法的實現(xiàn)方法
下面小編就為大家?guī)硪黄狝ndroid數(shù)據(jù)加密之異或加密算法的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
Android貝塞爾曲線初步學(xué)習(xí)第二課 仿QQ未讀消息氣泡拖拽黏連效果
這篇文章主要為大家詳細介紹了Android貝塞爾曲線初步學(xué)習(xí)的第二課,仿QQ未讀消息氣泡拖拽黏連效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Android中TextView顯示圓圈背景或設(shè)置圓角的方法
TextView顯示文本給用戶,并允許他們選擇編輯。TextView是一個完整的文本編輯器,但是其基本類配置為不允許編輯。下面這篇文章主要給大家介紹了關(guān)于Android中TextView顯示圓圈背景或設(shè)置圓角的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05
Android中Java instanceof關(guān)鍵字全面解析
instanceof關(guān)鍵字用于判斷一個引用類型變量所指向的對象是否是一個類(或接口、抽象類、父類)的實例.這篇文章主要介紹了Android中Java instanceof關(guān)鍵字全面解析的相關(guān)資料,需要的朋友可以參考下2016-07-07
Android自定義ViewGroup嵌套與交互實現(xiàn)幕布全屏滾動
這篇文章主要為大家介紹了Android自定義ViewGroup嵌套與交互實現(xiàn)幕布全屏滾動效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01

