Nine-Patch圖片是一種經過特殊處理的png圖片,能夠指定圖片的哪些區域可以被拉伸而哪些區域不可以。
(一)普通圖片被拉伸時的缺陷
有如下xml文件,其中子LinearLayout的背景圖片設置成一個名為chat的png圖片:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="wrap_content" 10 android:background="@drawable/chat" > 11 </LinearLayout> 12 13 </LinearLayout>
顯示效果如下:
而chat.png的原圖是這樣的:
可見嚴重變形,因為chat.png的寬度不足以填滿整個屏幕的寬度,整張圖片被均勻拉伸了,這是不能容忍的!於是我們就要把它處理成Nine-Patch圖片。
(二)Nine-Patch圖片的制作方法
1、在Android SDK的tools文件夾下,有一個draw9patch.bat的文件,就用它來制作Nine-Patch圖片。
2、打開這個軟件后,點擊File—>Open 9-patch將chat.png加載進來,如下:
3、可以在圖片的四個邊框繪制一個個小黑點,上邊框和左邊框的部分表示當圖片需要拉伸時就拉伸黑點標記的區域,下邊框和右邊框繪制的部分則表示內容會被放置的區域,如下圖:
4、修改好后點擊File—>Save 9-patch,把繪制好的圖片保存成chat.9.png,然后把chat.9.png再復制到工程的drawable目錄下,並刪除原來的chat.png,這時再看效果就沒有拉伸變形丑陋的情況了(注意:此時xml中仍然寫成:android:background="@drawable/chat"而不是:android:background="@drawable/chat.9")
5、注意:制作Nine-Patch圖片時每條邊的黑線必須是連續的,不能斷開,否則圖片會失效。