1. 程式人生 > >Android Studio(3.1.3 win64)中9-patch圖片的製作和使用

Android Studio(3.1.3 win64)中9-patch圖片的製作和使用

Android app 開發中使用的 9-patch 圖片,在作為空間背景時可以按照開發人員的設定做相應的拉伸,從而保證正常的小時效果。

在翻閱郭神的《第一行程式碼》第二版  chapter3 相應章節時,發現郭神對 9-patch 圖片的使用,有個步驟不生效,也可能是我理解有問題,遂花了點時間重新整理了一遍 9-patch 圖片的製作過程和使用步驟,親測可正常使用。

測試時使用的 Android Studio 版本號為 3.1.3(Win64)。

網上的其他部落格在介紹 9-patch 時會帶上以前eclipse和低版本的 Android Studio 的製作方法。本文就不在重複已有的內容,直接上最新版本的 Android Studio 上的用法。

1. 製作

步驟一:將待制作的原始圖片 xxx.png 放至 res/drawable 目錄下。注意不能放在其他目錄,我嘗試在 mipmap 目錄下操作,結果失敗了。

步驟二:選中原始圖片 xxx.png,右擊,在彈出的選單中選擇“Create 9-Patch file...”選項,如下圖所示


步驟三:在彈出的視窗中(如下圖)選擇儲存的路徑,設定新生成的 9-patch 圖片的名字,直接使用預設的路徑和名字即可,點選 OK 按鈕完成本步操作


步驟四:在 Android Studio 中直接到 res/drawable 目錄下雙擊步驟三中生成的 9-Patch 圖片,進入 9-Patch 圖片的編輯模式,如下圖:


勾選圖中幾個複選框,同時在圖片的四個邊緣分別畫四段黑線,左邊界和上邊界的兩條黑線是用來確定圖片伸縮的區域,即圖中紫色區域。

四個方向的黑線代表的意義如下:

頂部:在水平拉伸的時候,保持其他位置不動,只在這條黑線的區域做無限的延伸
左邊:在豎直拉伸的時候,保持其他位置不動,只在這條黑線的區域做無限的延伸
底部:在水平拉伸的時候,指定圖片裡的內容顯示的區域

右邊:在豎直拉伸的時候,指定圖片裡的內容顯示的區域

四個方向的黑線具體如何畫,就不多贅述了,很多部落格裡都有寫,實際操作的時候摸索一兩下就會。

步驟五:編輯完畢後,Ctrl+S快捷鍵儲存,此時如果直接 Make Project 會報 duplicate 的錯誤。郭神的《第一行程式碼》第二版相關章節說儲存後替換掉之前的png圖片,我就把原始的png圖片刪掉,並把新儲存的 9-Patch 圖片重新命名為原始 png 圖片的同名圖片,然後在 layout 檔案中設定 background 引用該圖片,發現伸縮效果根本不生效。

後來按照以下操作才解決這個問題:以上 Ctrl+S 儲存 9-Patch 圖片後,直接將res/drawable目錄下的原始png圖片刪除,9-Patch圖片的名字依然保持預設名(以上圖為例,依然叫 ic_launcher.9.png),此時在layout檔案中直接使用

android:background="@drawable/ic_launcher"

9-Patch 圖片的伸縮效果即可生效。

2.使用

至於 9-Patch 圖片的使用,上述步驟五中已經說明,操作以上例子,對於名為 xxx.png 的原始圖片,生成 xxx.9.png 的 9-Patch 圖片後,刪除 xxx.png 原始圖片,直接在 layout 檔案中使用 @drawable/xxx引用即可,不多說