標籤:instance 不同 tar normal pen strong styles raw tin
感謝原作者的整理:
http://blog.csdn.net/chenyjays/article/details/41308887
適配不同的語言
把UI中的字串儲存在外部檔案,通過代碼提取。
建立地區設定目錄和字串檔案
為了支援多國語言,在res/中建立一個額外的values目錄以連字號和ISO國家代碼結尾命名,比如values-es/ 是為語言代碼為"es"的地區放置簡單的資源檔的目錄。Android會在運行時根據裝置的地區設定,載入相應的資源。
若你決定支援某種語言,則需要建立資源子目錄和字串資源檔,例如:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
添加不同地區語言的字串值到相應的檔案。在運行時,android系統會根據使用者裝置當前的地區設定,使用相應的字串資源。
使用字元資源
你可以在你的原始碼和其他XML檔案中,通過<string>元素的name屬性來引用你的字串資源。
在你的原始碼中你可以通過R.string.<string_name>文法來引用一個字串資源,很多方法都可以通過這種方式來接受字串。
適配不同的螢幕
Android將裝置螢幕歸類為兩種常規屬性:尺寸和解析度。
有4種普遍尺寸:小(small),普通(normal),大(large),超大(xlarge)
4種普遍解析度:低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi)
建立不同的layout
為了針對不同的螢幕去最佳化使用者體驗,你需要對每一種將要支援的螢幕尺寸,建立唯一的XML檔案。每一種layout需要儲存在相應的資來源目錄中,目錄以-<screen_size>為尾碼命名。例如,對大尺寸螢幕(large screens),一個唯一的layout檔案應該儲存在res/layout-large/中。
例如,這個工程包含一個預設layout和一個適配大螢幕的layout:
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
layout檔案的名字必須完全一樣,為了對相應的螢幕尺寸提供最優的UI,檔案的內容不同。
按照慣例在你的app中簡單引用:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
系統會根據你的app所啟動並執行裝置螢幕尺寸,在與之對應的layout目錄中載入layout。
另一個例子,這一個工程中有為適配橫向螢幕的layout:
MyProject/
res/
layout/
main.xml
layout-land/
main.xml
預設的,layout/main.xml檔案用作豎屏的layout。
如果你想給橫屏提供一個特殊的layout,也適配於大螢幕,那麼你需要使用large和land修飾符。
MyProject/
res/
layout/ # default (portrait)
main.xml
layout-land/ # landscape
main.xml
layout-large/ # large (portrait)
main.xml
layout-large-land/ # large landscape
main.xml
建立不同的bitmap
你應該為4種普遍解析度:低,中,高,超高精度,都提供相適配的bitmap資源。要產生這些映像,你應該從原始的向量映像資源著手,然後根據下列尺寸比例,產生各種密度下的映像。
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (基準)
- ldpi: 0.75
這意味著,如果你針對xhdpi的裝置產生了一張200x200的映像,同樣的你應該對為hdpi產生150x150,為mdpi產生100x100, 和為ldpi產生75x75的圖片資源。
然後,將這些檔案放入相應的drawable資來源目錄中:
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
任何時候,當你引用@drawable/awesomeimage時系統會根據螢幕的解析度選擇恰當的bitmap。
適配不同的系統版本
指定最小和目標API層級
AndroidManifest.xml檔案中描述了你的app的細節,並且標明app支援哪些Android版本。具體來說,<uses-sdk>元素中的minSdkVersion和targetSdkVersion 屬性,標明在設計和測試app時,最低相容API的層級和最高適用的API層級(這個最高的層級是需要通過你的測試的)。
隨著新版本Android的發布,一些風格和行為可能會改變,為了能使你的app能利用這些變化,而且能適配不同風格的使用者的裝置,你應該設定targetSdkVersion的值去匹配最新的可用Android版本。
在運行時檢查系統版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
使用平颱風格和主題
Android提供了使用者體驗主題,為app提供基礎作業系統的外觀和體驗。這些主題可以在manifest檔案中被應用於你的app中.通過使用內建的風格和主題,你的app自然地隨著Android新版本的發布,自動適配最新的外觀和體驗.
使你的activity看起來像對話方塊:
<activity android:theme="@android:style/Theme.Dialog">
使你的activity有一個透明背景:
<activity android:theme="@android:style/Theme.Translucent">
應用在/res/values/styles.xml中定義的自訂佈景主題:
<activity android:theme="@style/CustomTheme">
使整個app應用一個主題(全部activities)在元素中添加android:theme屬性:
<application android:theme="@style/CustomTheme">
Android適配不同的裝置