在Android的設計過程當中,爲了適配不一樣的手機分辨率,圖片大多須要拉伸或者壓縮,這樣就出現了能夠任意調整大小的一種圖片格式「.9.png」。這種圖片是用於Android開發的一種特殊的圖片格式,它的好處在於能夠用簡單的方式把一張圖片中哪些區域能夠拉伸,哪些區域不能夠拉伸設定好,同時能夠把顯示內容區域的位置標示清楚。
本文結合一些具體的例子來看下.9.png的具體用法。html
首先看下普通的.png資源與.9.png的資源區別:android
普通的png資源就很少介紹了,能夠明顯看到.9.png的外圍是有一些黑色的線條的,那這些線條是用來作什麼的呢?咱們來看下放大的圖像:程序員
放大後能夠比較明顯的看到上下左右分別有一個像素的黑色線段,這裏分別標註了序號。簡單來講,序號1和2標識了能夠拉伸的區域,序號3和4標識了內容區域。當設定了按鈕實際應用的寬和高以後,橫向會拉伸1區域的像素,縱向會拉伸2區域的像素。以下圖:工具
拉伸的含義應該比較容易理解,可是內容區域的標註有什麼意義呢?咱們來看下圖:ui
這裏程序設置的文字垂直居中,水平居左的對齊方式。對齊方式是沒有問題的,可是對於這種大圓角同時又有些不規則邊框的的圖形來講,錯誤的標註方式會讓排版看起來很混亂。因此咱們須要修正內容區域的線段位置和長度。
把橫向的內容區域縮短到圓角之內,縱向的內容區域控制在輸入框的高度之內,這樣文字就能夠正常顯示了。spa
這裏還有一種特殊狀況,就是自己是.9.png的資源,可是在修改過程當中你但願這張.9.png不能被拉伸(在作皮膚的狀況中有可能會遇到),那怎麼辦呢?只要把拉伸區域的點點在透明像素的地方就能夠了,這樣拉伸的時候會拉伸透明部分的像素,而不會拉伸圖像自己。以下圖:
你們能夠看到拉伸區域的黑點是能夠不連續的。設計
說了半天.9.png的用法,那.9.png如何輸出呢?有三種方式能夠輸出.9.png:orm
第一種就是使用PS,可是其缺點是手工增長四周各1個像素,而後其區域顏色值只能是透明色(#00000000)或黑色(#FF000000),混入其餘顏色一概沒法正常顯示,並且沒法實時預覽,即便你經驗豐富,但也很難去考慮到目前Android市場這麼多的機型適配;若是混入了其餘顏色,而又未發覺,這樣再跟程序員來回折騰,時間上也夠喝一壺的了。htm
第二種,就是使用谷歌官方的draw9Patch.bat這個工具,這個也有劣勢,1.電腦要安裝Java環境,2.下載那個幾百M的文件,3.draw9Patch這個工具其實很難用,很粗糙,整個的體驗也很糟糕。特別是那一根像素,拖着鼠標仔細的描那根像素,哎呀,別提那個憋屈勁兒了。。。圖片
第三種,NinePng九圖神器App(各大App市場都有的下載),這是一個專門處理點九圖的工具App,可以很是簡單的用手指拖動就能夠直接修改點九圖了,並且能夠設置文字等信息實時預覽效果。
輸出的方式是先輸出普通的png資源,而後擴大畫布大小,上下左右各空出一個像素,再用一個像素的鉛筆工具(顏色選擇純黑色),上下左右分別畫點就能夠了,保存的時候注意把後綴修改成.9.png。
有兩點須要特別注意下:
1.最外圍的一圈像素必需要麼是純黑色,要麼是透明,一點點的半透明的像素都不能夠有,好比說99%的黑色或者是1%的投影都不能夠有;
2.文件的後綴名必須是.9.png,不能是.png或者是.9.png.png,這樣的命名都會致使編譯失敗。
參考來源:
[1] Android設計中的.9.png, 騰訊ISUX (http://isux.tencent.com/android-ui-9-png.html)
[2]