1. 簡介
在本程式碼研究室中,您將瞭解如何使用 ImageView 將圖像新增至應用程式。
必要條件
- 如何在 Android Studio 中建立及執行新的應用程式。
- 如何使用「版面配置編輯器」在
TextViews上新增及移除屬性。
課程內容
- 如何將圖像或相片新增至 Android 應用程式。
- 如何使用
ImageView在應用程式中顯示圖像。 - 如何將文字擷取為字串資源,讓您更輕鬆地翻譯應用程式,並重複使用字串。
- 如何盡可能讓更多人使用您的應用程式。
建構項目
- 新增「生日快樂」應用程式即可新增圖像。
軟硬體需求
- 已安裝 Android Studio 的電腦。
- 「製作生日卡」程式碼研究室的應用程式。
2. 設定應用程式
- 從 Android Studio 中的舊版程式碼研究室開啟專案。您可以使用解決方案程式碼或您建立的程式碼。執行應用程式時,這個應用程式看起來會像這樣。

在專案中新增圖片
在這項工作中,您將從網際網路下載圖像並新增到「生日快樂」應用程式。
- 按一下這裡前往 GitHub 查看生日資訊卡的圖像。
- 按一下右側的「Download」按鈕。這裡會顯示圖像本身。

- 用滑鼠右鍵按一下圖像,並將檔案儲存為 androidparty.png。請記下您儲存檔案的位置 (例如「Downloads」資料夾)。
- 在 Android Studio 中,按一下選單中的「View」>「Tool Windows」>「Resource Manager」,或按一下「Project」視窗左側的「Resource Manager」分頁標籤。
- 按一下「Resource Manager」下方的「+」圖示,然後選取「Import Drawables」,即可開啟檔案瀏覽器。

- 在檔案瀏覽器中找出您下載的圖片檔,然後按一下「Open」。
- 按一下「Next」。Android Studio 會顯示圖像的預覽畫面。
- 按一下「Import」。
- 如果圖像已成功匯入,Android Studio 會將圖像新增至「Drawable」清單。這份清單包含應用程式的所有圖片和圖示。您現在可以在應用程式中使用這個圖片。

- 按一下選單中的「View」>「Tool Windows」>「Project」,或點選最左側的「Project」分頁標籤,即可切換回專案檢視畫面。
- 展開「app」>「res」>「drawable」,確認圖像位於應用程式的「drawable」資料夾中。

3. 新增 ImageView
如要在應用程式中顯示圖像,則必須顯示地點。就像使用 TextView 來顯示文字一樣,您也可以使用 ImageView 來顯示圖像。
在這項工作中,您要在應用程式中新增 ImageView,並將其圖像設定為您下載的杯子蛋糕圖像。接著調整位置並調整大小,讓圖像填滿整個螢幕。
新增 ImageView 並設定圖像
- 在「Project」視窗中開啟「activity_main.xml」(「App」>「Res」>「Layout」>「activity_main.xml」)。
- 在「版面配置編輯器」中,前往「Palette」,然後將
ImageView拖曳至您的應用程式。請將其放在中央附近,且不要與任何文字重疊
系統隨即會開啟「Pick a Resource」對話方塊。這個對話方塊會列出應用程式的所有圖像資源。請注意「drawable」分頁標籤下方的生日圖像。可繪製資源是圖形可繪製於畫面上的一般概念。包括圖像、點陣圖、圖示和許多其他類型的繪圖資源。
- 在「Choose a Resource」對話方塊中,於「Drawable」清單中找到蛋糕圖像。
- 點選要移除的圖像,然後按一下「OK」。

這麼做會將圖像新增至應用程式,但可能無法正常顯示,且不會填滿整個螢幕。您將在後續步驟中修正這個問題。
設定 ImageView 的位置和大小
- 在「版面配置編輯器」中按住並拖曳
ImageView,但請注意,在「Design」檢視畫面內,應用程式畫面周圍會顯示粉紅色矩形。 粉紅色矩形代表用來放置ImageView的螢幕邊界。 - 拖曳
ImageView,讓左側和右側邊緣對齊粉紅色矩形。當您拉近時,Android Studio 會將圖像「貼齊」邊緣 (您將在稍後處理頂端和底端)。

ConstraintLayout 中的 Views 需要水平和垂直限制,才能讓 ConstraintLayout 知道如何定位。接下來,您將新增這些內容。
- 將游標懸停於
ImageView外框頂端的圓圈上,並以另一個圓圈醒目顯示。 - 將圓圈拖曳到應用程式畫面頂端,當您拖曳圓圈時,會有箭頭連結圓圈與游標。在螢幕上拖曳,直到貼齊畫面頂端。您已新增從
ImageView頂端至ConstraintLayout頂端的限制條件。

- 新增從
ImageView的底部到ConstraintLayout底部的限制。可能太靠近邊緣,無法像對頂端那樣拖動。這時您可以在「Attributes」視窗的「Constraint Widget」中,點選底部的「+」來新增至限制條件。確保邊界為 0。

- 在「Attributes」窗格中,使用「Constraint Widget」在左側和右側新增 0 的邊界。 這項操作會自動建立對該指令的限制。

圖像現已置中,但還沒有佔滿整個螢幕畫面。您將在後續步驟中修正此問題:
- 在「Constraint」部分的「Constraint Widget」下方,將「layout_width」設定為「0dp」。0dp 是 Android SDK 用來為
ImageView寬度使用比對限制條件的簡要說明。由於剛才新增的限制條件,因此寬度與ConstraintLayout一樣,但須再減掉任何邊界。

- 將「layout_height」設定為「0dp」。由於已新增的限制條件,因此
ImageView高度與ConstraintLayout一樣,但須再減掉任何邊界。

ImageView的寬度和高度與應用程式畫面一樣,但圖像在ImageView內置中,且圖像上方和下方則有不少空白字元。這種做法看起來不太吸引人,因此您可以調整ImageView的 scaleType,瞭解如何調整圖像大小和對齊圖像。如要進一步瞭解ScaleType,請參閱開發人員參考指南。現在,應用程式看起來會如下所示。

- 找出 scaleType 屬性。您可能需要向下捲動,或搜尋這項屬性。請試試看為 scaleType 設定不同的值,瞭解結果如何。
- 完成後,請將 scaleType 設定為 centerCrop,這樣圖像就會填滿螢幕,不會扭曲變形。

蛋糕圖像現在應填滿整個螢幕,如下所示。

但看不到您的生日問候語和簽名。您將在後續步驟中修正這個問題。
將 ImageView 移至文字後方
ImageView 填入畫面後,您就無法再查看文字。這是因為圖像現在可以覆蓋文字。因此 UI 元素的順序很重要。您先新增 TextViews,再新增 ImageView,也就是位於最上層。當您在版面配置中新增檢視畫面時,系統會將這些檢視畫面新增至檢視畫面清單的結尾,並依照清單上的順序排列。ImageView 已新增至 ConstraintLayout 中的 Views 清單結尾。這代表這是於最後一個繪製項目,並繪製在 TextViews 上。如要修正,請變更檢視畫面的順序,並將 ImageView 移至清單開頭以先繪製。

在「Component Tree」中點選並拖曳 ImageView 至 TextViews 正下方 ConstraintLayout。系統隨即會顯示一條三角形的藍色線條,以代表 ImageView 的位置。將 ImageView 拖放到 ConstraintLayout 正下方即可。

ImageView 現在應列於 ConstraintLayout 下方的清單中的第一個,後面再顯示 TextViews。現在應可看見「生日快樂!」以及「Emma 祝賀」(您可以暫時忽略缺少內容說明的警示)。
恭喜!您已新增圖像至 Android 應用程式!
4. 採用完善的程式設計做法
您在先前的程式碼研究室中新增 TextViews 時,Android Studio 會加標記並加上警示三角形。這個步驟將修正這些警示,並修正對 ImageView 的警示。
翻譯
請特別注意,您在撰寫應用程式時,系統可能會將您的應用程式內容翻譯成其他語言。如同先前的程式碼研究室所說,字串是一系列字元,例如「Sam,生日快樂!」。
硬式編碼字串是直接編寫於應用程式程式碼中的字串。經過硬式編碼的字串可將應用程式翻譯成其他語言,讓您更難為應用程式的不同部分重複使用字串。如要解決這些問題,您可以「將字串擷取至資源檔案」。這表示您不需要將程式碼以硬式編碼方式寫入程式碼中,只要將字串置入檔案中,然後為其命名,然後每當您想使用該字串時,使用該名稱即可。即使您變更字串或將其翻譯成其他語言,名稱仍會維持不變。

- 按一下第一個
TextView旁邊的橘色三角形,旁邊是「Sam,生日快樂!」。Android Studio 會開啟新視窗,在其中顯示更多資訊和建議的修正方式。您可能需要向下捲動才能夠看到「Suggested Fix」。

- 按一下「Fix」按鈕。Android Studio 會開啟「Extract Resource」對話方塊。在這個對話方塊中,您可以自訂所呼叫的字串資源,以及資源儲存方式的一些細節。「Resource name」就是您要呼叫的字串。「Resource value」本身就是字串本身。
- 在「Extract Resource」對話方塊中,將「Resource name」變更為 happy_birthday_text。字串資源應有小寫名稱,且每個字詞之間應用底線分開。其他設定保留預設值。

- 按一下「OK」按鈕。
- 在「Attributes」 窗格中找出「text」屬性,並注意到 Android Studio 已自動設定為 @string/happy_birthday_text。

- 開啟 strings.xml (「App」>「Res」>「Values」>「string.xml」),並注意到 Android Studio 建立了名為 happy_birthday_text 的字串資源。
<resources>
<string name="app_name">Happy Birthday</string>
<string name="happy_birthday_text">Happy Birthday, Sam!</string>
</resources>
strings.xml 檔案含有使用者在應用程式中會看到的字串清單。請注意,您的應用程式名稱也是字串資源。只要將所有字串集中在一起,就能更輕鬆地翻譯應用程式中的所有文字,並更輕鬆地在應用程式的不同部分重複使用字串。
- 按照相同步驟擷取簽名
TextView的文字,並將字串資源命名為 signature_text。
完成的檔案應如下所示。
<resources>
<string name="app_name">Happy Birthday</string>
<string name="happy_birthday_text">Happy Birthday, Sam!</string>
<string name="signature_text">From Emma.</string>
</resources>
檢查應用程式是否有無障礙設計
只要遵循完善的程式設計做法,所有使用者 (包括身心障礙使用者) 都能輕鬆瀏覽您的應用程式並與您的應用程式互動。
Android Studio 提供了提示和警示,讓使用者更容易使用您的應用程式。
- 在「Component Tree」中,找出先前新增的
ImageView旁邊的橘色三角形。將游標懸停在指標上,就會看到工具提示,說明圖像缺少「contentDescription」屬性。內容說明可以定義 UI 元素的用途,讓您的應用程式更容易使用 TalkBack。
但應用程式中的圖像僅供參考,您只需將 importantForAccessibility 属性設定為 no.就可讓 TalkBack 略過 ImageView,而無需設定向使用者宣布的內容描述。
- 在「Component Tree」中選取
ImageView。 - 在「Attributes」視窗的「All Attributes」部分中,找出 importantForAccessibility,並將其設定為「no」。
ImageView 旁邊的橘色三角形圖示會消失。
- 執行應用程式,確保應用程式仍可正常運作。
恭喜!您已將圖像新增至「生日快樂」應用程式中。之後,您只要遵守無障礙指南,即可更輕鬆地翻譯成其他語言!

5. 解決方案程式碼
Happy Birthday 應用程式的解決方案程式碼已上傳到 GitHub,可供您按照需求查看最終結果。
GitHub 是一項可讓開發人員管理軟體專案程式碼的服務,並且使用版本控制系統 Git 來追蹤每個版本的程式碼變更。如果您曾檢視 Google 文件的版本記錄,可以查看過去曾編輯文件的時間和內容。同樣地,您可以追蹤專案中程式碼的版本記錄。以個別使用者或團隊身分處理專案時,這項功能非常實用。
您也可以在 GitHub 提供的網站上查看及管理專案。這個 GitHub 連結可讓您線上瀏覽「生日快樂」專案檔案,或是將檔案下載至電腦。
若要取得本程式碼研究室的程式碼,並在 Android Studio 中開啟,請按照下列步驟:
取得程式碼
- 按一下所提供的網址。系統會在瀏覽器中開啟專案的 GitHub 頁面。
- 在專案的 GitHub 頁面中,按一下「Code」按鈕,開啟對話方塊。

- 在對話方塊中,按一下「Download ZIP」按鈕,將專案儲存到電腦。等待下載作業完成。
- 在電腦上尋找檔案 (可能位於「Downloads」資料夾中)。
- 按兩下 ZIP 檔案,將檔案解壓縮。這項操作會建立含有專案檔案的新資料夾。
在 Android Studio 中開啟專案
- 啟動 Android Studio。
- 在「Welcome to Android Studio」(歡迎使用 Android Studio) 視窗中,按一下「Open an existing Android Studio project」(開啟現有的 Android Studio 專案)。

注意:如果 Android Studio 已開啟,請依序選取「File」>「New」>「Import Project」選單選項。

- 在「Import Project」對話方塊中,前往未壓縮專案資料夾所在的位置 (可能位於「Downloads」資料夾中)。
- 在專案資料夾中,選取「生日快樂」資料夾。
- 按一下「Open」。
- 等待 Android Studio 開啟專案。
- 按一下「Run」按鈕
即可建構並執行應用程式,請確認應用程式的建構符合預期。 - 在「Project」工具視窗中瀏覽專案檔案,查看應用程式的設定方式。
6. 摘要
- Android Studio 中的「Resource Manager」可協助您新增及管理圖像和其他資源。
ImageView是一種用於在應用程式中顯示圖像的 UI 元素。ImageViews應該提供內容說明,讓您的應用程式更容易使用。- 向使用者顯示的問候語 (例如生日問候語) 應擷取為字串資源,方便您將應用程式翻譯成其他語言。
7. 瞭解詳情
- Android Kotlin 基本概念的相關詞彙
- Android Studio 中的「Resource Manager」
ImageView類別- 無障礙設計
- 支援不同語言
- 開始使用 GitHub
8. 自行練習
請練習下列項目:
- 根據設計建立專屬的生日卡應用程式。
- 請先思考您需要的
Views資訊。 - 新增順序最簡單的步驟?
- 您需要將哪些圖像新增至可繪項目資料夾?
Android 應用程式通常有兩種類型點陣圖圖像:JPEG 檔案和 PNG 檔案。PNG 檔案內有透明 (空白) 區域。若要進一步瞭解圖像格式,請參閱開發人員參考資料。
- 請記得將
Views置於有限制條件和邊界處,然後調整其樣式。 - 想讓圖像上的文字更加顯眼,不妨嘗試使用 shadowColor、shadowDx、shadowDy 和 shadowRadius 等實驗功能。

檢查操作:
應用程式成品應能夠順利執行,而且會顯示您設計的生日資訊卡。
恭喜,您成功建立生日卡應用程式!在社群媒體上分享您的作品,並加上 #LearningKotlin 主題標記,讓我們看到您的作品!