NinePatch Image就是平時說的9.png格式圖片android
優勢:能夠定義可擴展區域,自動處理png圖片擴展的問題,能夠很好的適應Android設備那千奇百怪的屏幕分辨率要求。ide
限制,只適合純色或者簡單線框的圖形,若是涉及的圖像比較複雜或者顏色層次較多,是難以得到比較良好的擴展效果的。工具
主要特色:只是在普通png圖像最外面增長了一圈1px的邊框,邊框就是用來定義圖片中可擴展的和靜態的區域。對於大多數狀況來講,9.png能夠分割爲9個區域,這大概也是9.png這個名稱的由來:spa
如上圖所示,上邊和左邊的黑色邊框將圖片分割成9個區域,其中xml
1,3,7,9是靜態區域,也就是不會被擴展的區域。圖片
2,8是水平擴展區域ci
4,6是豎直擴展區域擴展
5是重合部分,也就是水平豎直都可以擴展的區域im
固然,雖然叫9.png圖片,可是並不僅限於分割成9個區域,上邊和左邊能夠定義任何數量的線框,從而將圖片分割成多個區域。margin
另外,右邊和底部邊框能夠定義內容區域,不過這個內容區域與是否擴展沒有聯繫,更多隻是像給內容增長一個padding而已:所以這部分是可選的。
draw9patch是android SDK自帶的編輯9.png圖片的小工具。使用比較簡單,只有幾個選項:
1.show lock。顯示不可繪區域
2.show patches。顯示分割區域
3.show content。顯示內容區域,即預覽圖中的紫色區域
4.show/hide bad patches。顯示有問題區域
惟一值得一提的是bad patches功能,能夠預先標示出在擴展中會出現失真的區域:
放大看看:
能夠看出,因爲水平擴展區域覆蓋了左上角的圓角,擴展過程當中會產生失真,因此用紅色方框標示出來了,這個功能算是比較有用的。
9.png除了能夠定義擴展區域外,其餘與普通png沒有區別,因此最好是按照hdpi,xhdpi,xxdpi文件夾放置。因此若是隻是單純的圓角矩形之類的圖片,最好仍是直接使用xml文件定義drawable比較方便。
若是9.png圖片過大,可能出現不一樣區域相互覆蓋的問題。因此9.png圖片只須要保留那些主要輪廓,儘可能作得小一些。
若是右邊和下邊的內容區域沒有定義,某些時候就會出現這種問題,因此最好仍是將右邊和下邊的內容區域所有都定義出來。
Android分享 Q羣:315658668