9 個補丁

9 貼片是可拉伸的影象,其中可以拉伸的區域由透明邊框上的黑色標記定義。

有一個偉大的教程在這裡
雖然它已經很老了,它仍然很有價值,它幫助我們許多人深刻理解了 9 個補丁裝備。

不幸的是,最近該頁面被擱置了一段時間(它目前再次出現)。

因此,需要在我們可靠的伺服器上為 Android 開發人員提供該頁面的物理副本。

這裡是。

一個簡單的 9-PATCH for ANDROID UI 指南 2011 年 5 月 18 日

當我在開發我的第一個 Android 應用程式時,我發現 9-patch(又名 9.png)令人困惑並且記錄不清。過了一會兒,我終於明白了它是如何工作的,並決定把一些東西放在一起幫助別人弄明白。

基本上,9-patch 使用 png 透明度來執行 9 切片或 scale9 的高階形式。這些指南是在影象邊緣繪製的直線 1 畫素黑線,用於定義影象的縮放和填充。通過命名你的影象檔案 name.9.png,Android 將識別 9.png 格式並使用黑色指南來縮放和填充你的點陣圖。

這是一個基本的指南地圖:

StackOverflow 文件

如你所見,影象的每一面都有指南。TOP 和 LEFT 指南用於縮放影象(即 9 切片),而 RIGHT 和 BOTTOM 指南用於定義填充區域。

黑色指引線會從你的影象中刪除/刪除 - 它們不會在應用中顯示。指南只能是一個畫素寬,所以如果你想要一個 48×48 的按鈕,你的 png 實際上是 50×50。任何厚於一個畫素的內容都將成為你影象的一部分。 (我的例子有 4 畫素寬的指南,以提高可見度。它們應該只有 1 畫素)。

你的指南必須是純黑色(#000000)。即使顏色(#000001)或 alpha 略有差異也會導致它失敗並正常拉伸。這種失敗也不會顯而易見*,它無聲地失敗! 是。真。現在你知道了。

另外,你應該記住,單畫素輪廓的剩餘區域必須完全透明。這包括影象的四個角落 - 應該始終清晰。這可能是一個比你意識到的更大的問題。例如,如果你在 Photoshop 中縮放影象,它將新增消除鋸齒的畫素,這些畫素可能包含幾乎不可見的畫素,這也會導致它失敗*。如果必須在 Photoshop 中縮放,請使用重新取樣影象下拉選單中的最近鄰居設定(位於影象大小彈出選單的底部)以保持指南上的銳邊。

*(2012 年 1 月更新)這實際上是最新開發工具包中的修復。以前它會表現為你的所有其他影象和資源突然破壞,而不是實際破壞的 9 補丁影象。

StackOverflow 文件

TOP 和 LEFT 參考線用於定義影象的可縮放部分 - LEFT 用於縮放高度,TOP 用於縮放寬度。使用按鈕影象作為示例,這意味著按鈕可以在黑色部分內水平和垂直地伸展,並且其他所有內容(例如角落)將保持相同的大小。允許你擁有可以縮放到任何尺寸並保持統一外觀的按鈕。

值得注意的是,9 補丁影象不會縮小 - 它們只會向上擴充套件。所以最好從儘可能小的開始。

此外,你可以省略比例線中間的部分。因此,例如,如果你的中間有一個帶有銳利光澤邊緣的按鈕,則可以在 LEFT 指南的中間省略幾個畫素。影象的中心水平軸不會縮放,只會縮放其上方和下方的部分,因此你的銳利光澤不會消除鋸齒或模糊。

StackOverflow 文件

填充區域指南是可選的,它提供了一種為文字標籤等內容定義區域的方法。填充確定影象中放置文字,圖示或其他內容的空間。9-patch 不僅適用於按鈕,也適用於背景影象。

上面的按鈕和標籤示例誇大了,只是為了解釋填充的想法 - 標籤不完全準確。說實話,我沒有經歷 Android 如何做多行標籤,因為按鈕標籤通常是單行文字。

最後,這裡可以很好地演示縮放和填充指南的變化,例如帶有背景影象和全圓邊的 LinearLayout:

http://i.stack.imgur.com/WOT14.jpg

在這個例子中,沒有使用 LEFT 指南,但我們仍然需要有一個指南。背景影象不垂直縮放; 它只是水平縮放(基於 TOP 指南)。檢視填充導板,右側和底部導板延伸到它們與影象彎曲邊緣相交的位置。這使我可以將圓形按鈕放在靠近背景邊緣的位置,以獲得緊湊,合身的外觀。

就是這樣了。一旦你得到它,9 補丁是非常容易的。這不是完美縮放的完美方式,但填充區域和多線縮放導向確實比傳統的 9 切片和 scale9 提供更大的靈活性。試一試,你會很快弄明白的。