一、建立NinePatchDrawable
一個NinePatch也是一個PNG的圖片,不過不同的是可以為這種格式的圖片定義可伸縮的地區,當某個視圖的內容超過了正常的尺寸的時候,這種格式的圖片會自動展開以適應不同的尺寸。一般這種圖片是作為視圖的背景,並且視圖至少有一個尺寸(layout_width或者layout_height)是設定為"warp_content"。當視圖自增長來適應內容的時候,Nine-Patch格式的圖片也會相應的進行縮放來匹配視圖的尺寸。
NinePatchDrawable的建立方式幾乎和BitmapDrawable一模一樣,使用方式也沒有多大的區別。只是在xml建立的時候,沒有那麼多的屬性。
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="" android:dither=""/>
它只有這三個屬性。
二、建立一個.9.png格式的圖片
在androidsdk的tools目錄下,有這樣一個工具draw9patch.bat。使用這個工具,可以很快速的繪製一個.9.png格式的圖片。
這種格式的圖片在android 環境下具有自適應調節大小的能力。
(1)允許開發人員定義可擴充地區,當需要延伸圖片以填充比圖片本身更大地區時,可擴充區的內容被延展。
(2)允許開發人員定義內容顯示區,用於顯示文字或其他內容
如所示:
左側和上方的黑線交叉的部分即可擴充地區。右側和下方的黑線交叉的部分即內容顯示區。用它可以實現部分展開,從而實現圖片在安卓系統上的完美應用
有這樣一張圖片,圖片名為mask.png.
將它製作了一個有展開部分的mask1.9.png圖片。和有內容限制和展開部分的mask2.9.png圖片。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 普通圖片為背景的按鈕 ,內容較少,不會展開--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/mask" android:text="1111"/> <!-- 普通圖片為背景的按鈕 ,內容過多,圖片會展開,圖片變形模糊--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/mask" android:text="111111111111111111111"/> <!-- 有展開設定的.9.png片為背景的按鈕 ,內容過多,展開部分會展開 ,圖片不會變形--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/mask1" android:text="111111111111111111111"/> <!-- 有內容限制和展開設定的.9.png片為背景的按鈕 ,內容過多,展開部分會展開 ,並且文字內容位置改變--> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/mask2" android:text="1111111111"/></LinearLayout>
: