iT邦幫忙

DAY 5
1

以「寶寶聯絡簿」為例,適合 Android 初學者的學習筆記系列 第 5

寶寶生活記錄 App (Day5 多國語言與多螢幕解析度支援)

昨天已經預告將針對字串資源和圖檔資源做更進一步的說明,因此主題是:如何讓 App 支援多國語言和不同螢幕解析度。首先說明如何支援多國語言,昨天已經看到一個「參考字串資源」的實例,@string/hello_world 會參考到 /res/values 下 strings.xml 中,name 屬性的屬性值為 hello_world 的 string 標籤所包含的字串,要支援多國語言我們只要針對不同的語言產生不同的 strings.xml 就可以了。

首先於 res 資料夾下新增一個名為 values-zh-rTW 的資料夾 (反白 res 後按右鍵,選擇 New ⇒ Directory),並且將 values 下的 strings.xml 複製一份到 values-zh-rTW,操作完成後,資料夾結構如下圖所示:

接著將 values-zh-rTW 下的 strings.xml 修改成如下所示:

1  <?xml version="1.0" encoding="utf-8"?>
2  <resources>
3
4      <string name="app_name">寶寶日誌</string>
5      <string name="hello_world">你好,世界!</string>
6      <string name="action_settings">設定</string>
7
8  </resources>

要注意的是,我們修改的只有 string 標籤和其尾標籤內的內容,並沒有修改 name 屬性的屬性值!也就是 TextView 中 android:text 屬性的屬性值 (@string/hello_world) 跟使用的語言是無關的,當手機設定的語言是英文,在我們的應用程式中,就會從預設的 /values/strings.xml 找 name 屬性值為 hello_word 的字串,也就是「Hello world!」,而當手機設定成中文時,則會從 /values-zh-rTW/strings.xml 去找 name 屬性值為 hello_word 的字串,也就是「你好,世界!」,執行範例如下所示:

不同的語言有不同的資料夾名稱,下表列出「班表小幫手」有使用到的語言,如果您要新增的語言不在列表上,用 Google 搜尋一下即可查詢得到。

接下來說明如何支援多螢幕解析度,如果讀者還記得昨天的內容,筆者把一個圖檔放到 drawable-hdpi,事實上我們還可在 res 資料夾下,還可發現 drawable-mdpi, drawable-xhdpi, drawable-xxhdpi 等資料夾,這些資料夾是為了讓我們的 App 能支援多螢幕,關於支援多螢幕的說明,可參考官方文件: http://developer.android.com/guide/practices/screens\_support.html,文件中有很多是設計師和程式設計師值得參考的資料。

此處,筆者只簡單地說明一下如何將同一張圖 (解析度不同) 放在不同的資料夾,若使用者手機的螢幕解析度較高,App 會讀取高解析度的圖,反之若使用者手機的解析度較低,就會讀取解析度低的圖。

其實其原理跟支援多國語言非常類似,首先準備好一張圖,假設想支援兩種解析度,那麼這張圖您就必須先準備好兩種版本(高解析度與低解析度),也就是您會有兩個檔案,要注意的是,這兩個檔案的檔名必須一模一樣,此外,大家還記得昨天介紹過的 R.java 嗎? 圖檔主檔名會變成一個 Java 整數變數,因此主檔名的名稱必須符合 Java 對於變數的命名規則,建議使用小寫字母和數字(當然不能以數字做開頭)。

接著把這兩個檔名一樣的圖檔放置到不同的資料夾下就可以了,例如 drawable-hdpi 和 drawable-xhdpi,如此系統就會根據使用者的螢幕解析度讀取相對應的圖檔。事實上筆者在開發的過程中,把圖檔都放在 drawable-hdpi,也就是不管使用者手機的螢幕解析度為何,都只會讀取 drawable-hdpi 下的圖檔,這麼做的好處是可以降低 APK 的大小。事實上製作 rawable-hdpi 和 drawable-xhdpi 兩個版本可能就很足夠了。


上一篇
寶寶生活記錄 App (Day4 使用者界面實作範例-1)
下一篇
寶寶生活記錄 App (Day6 使用者界面實作範例-2)
系列文
以「寶寶聯絡簿」為例,適合 Android 初學者的學習筆記30

1 則留言

0
麗麗
iT邦研究生 4 級 ‧ 2017-02-07 14:06:35

這個網址好像掛掉了TAT
http://developer.android.com/guide/practices/screens\_support.html

  1. 發生錯誤。

The requested URL was not found on this server.
That's all we know.

我要留言

立即登入留言