前言html
本章內容爲開發者指南(Dev Guide)/Best Practices/Optimizing Apps for Android 3.0,譯爲「爲Android 3.0優化應用程序",版本爲Android3.0 r1,翻譯來自"移動雲_文斌",歡迎訪問它的博客:"http://blog.csdn.net/caowenbin",再次感謝"移動雲_文斌" !期待你一塊兒參與翻譯Android的相關資料,聯繫我over140@gmail.com。
android
聲明api
歡迎轉載,但請保留文章原始出處:)
app
農民伯伯:http://over140.blog.51cto.com/框架
Android中文翻譯組:http://goo.gl/6vJQl異步
原文ide
http://developer.android.com/guide/practices/optimizing-for-3.0.html 工具
(原文已更新,下面連接能夠看到本文原文2011-5-4:http://www.devdiv.com/android/docs/guide/practices/optimizing-for-3.0.html )佈局
若是你正在開發Android應用程序,在Android 3.0中提供了爲平板或相似設備加強用戶體驗的新特性。通常狀況下,因爲Android應用程序的向下兼容性,任何你已經發行的應用程序都能在Android 3.0設備上運行。而後,仍是能夠經過一些簡單的修改來爲平板類型的設備進行優化。性能
本文描述的是你怎樣爲Android 3.0優化現存的應用程序,而且能和老版本進行兼容,或者使用新的API完整的升級你的應用程序。
內容包括:
1. 安裝Android 3.0 SDK
2. 選擇優化或升級:
a) 平板電腦或相似設備優化應用
你已經有現存的應用,想爲老版本的Android保持兼容性
b) 爲平板電腦或相似設備升級或開發新的應用
你想使用Android 3.0的API升級你的應用,或者面向平板電腦或相似設備建立新的應用。
安裝Android 3.0SDK(Set Up Your SDK with Android 3.0)
要在Android 3.0上開始測試或開發你的應用程序,須要使用新的平臺來配置現存的Android SDK:
(若是你尚未Android SDK,如今就去下載吧)
1. 運行Android SDK和AVD管理器並安裝以下內容:
* Android 3.0 平臺SDK
* Android SDK工具,版本10
* Android SDK 平臺工做,版本3
* Android SDK文檔,API 11
* SDK API 11的示例代碼
2. 爲平板類型設備建立AVD
設置target爲「Android 3.0」,skin爲「WXGA」(默認的skin)
關於模擬器性能(About emulator performance)
由於Android模擬器必須在你的計算機模擬ARM指令集,而且WXGA屏幕比典型的虛擬設備大不少,因此模擬器的性能遠比真實的設備低。
特別是在初始化模擬器時很慢,根據你的硬件狀況,須要花較長時間。當模擬器啓動時,已經限制了用戶響應,因此請耐心等待直到Home界面(或解鎖界面)出現。
不管如何,你不須要每次從新生成你的應用程序的時候都從新啓動模擬器,一般狀況下你只須要啓動一次並讓它保持運行便可。也能夠參考下面的提示信息以在首次初始化後減小啓動次數。
咱們正在努力的解決性能問題並在未來發布,目前,模擬器仍然是在沒有真實設備的狀況下評估你的應用程序表現和功能的最好途徑。
提示:要減小模擬器的啓動次數,能夠在你利用SDK和AVD管理器建立它時容許AVD快照(在AVD建立時有一個Enable snapshots的複選框)。而後,從AVD管理器啓動AVD並檢查Launch from snapshot和Save to snapshot,利用這種方式,當你關閉模擬器時,一個AVD狀態的快照就被保存起來,模擬器關閉時會變慢。當你已經擁有了一個初始化後的快照後你能夠取消Save to snapshot(在首次關閉AVD以後)。
爲平板電腦或相似設備優化應用
(Optimize Your Application for Tablets and Similar Devices)
若是你已經爲早期的Android版本開發了應用,能夠在不改變最低版本需求的狀況下作幾個事情爲Android 3.0的平板類型設備進行優化。(不須要修改你的manifest中的android:minSdkVersion)
注意:全部的Android應用程序都是前向兼容的,所以,若是你按標準使用了Android的API,你什麼也不用作,應用就能夠在Android 3.0的設備上工做得很好。可是,爲了向使用Android 3.0平板或相似設備管理的用戶提供更好的體驗,你應該更新你的程序來適應新的系統主題併爲大屏幕提供優化。
這裏有幾件事情能夠爲運行Android 3.0的設備優化你的應用程序:
1. 在Android 3.0上測試你當前的應用
1. 生成你的應用程序並在Android 3.0 AVD(上文中建立的AVD)上安裝
2. 運行你一般的測試以確認全部功能看起來正常
2. 在你的應用中應用新的「holographic」主題
1. 打開你的manifest文件並修改<uses-sdk>標識,設置android:targetSdkVersion爲」11」,例如:
<manifest ... >
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="11" />
<application ... >
...
<application>
</manifest>
針對Android 3.0的目標平臺,系統會自動爲運行在Android 3.0設備上的每個activity應用holographic主題,這個主題爲控件提供了新的設計,例如按鈕和文本框,而且修改了其餘的可視化元素。這個標準化主題是爲Android 3.0製做的,因此你的應用程序將看起來會呈現這同樣式。
另外,這個主題可以使用Action Bar,用於取代在activity頂部的傳統的標題欄,而且提供用戶訪問activity的選項菜單位。
2. 繼續使用android:minSdkVersion指定的最低版本編譯程序,但仍然安裝在Android 3.0 AVD上,反覆測試並確保你的用戶接口在holographic主題下工做正常。
提示:若是你在activity中直接應用了其餘主題,它將會取代holographic主題,解決的辦法是你可使用system version qualifier來爲基於holographic主題的android 3.0的設備提供選擇。更多信息可參考select a theme based on platform version。
3. 超大屏幕選擇佈局
經過運行時爲超大屏幕提供可選資源,你能不用採用新的API就讓你的應用提供在平板類型設備上的用戶體驗。
例如,這裏列出了爲超大屏幕建立新佈局時所要考慮的因素:
* 橫向佈局:平板類型設備一般默認的方向是橫向的,所以你應該確保你的activity爲寬視野作了優化。
你可使用land資源,可是若是你想爲超大的橫屏選擇資源的話,你應該同時使用xlarge和land。例如res/layout-xlarge-land/,這些限定名稱的是有順序要求的,詳見Providing Alternative Resources。
* 按鈕位置:考慮當兩隻手持有平板設備時你UI中按鈕的位置是否易於操做。
* 字號大小:確保你的應用使用sp單位進行字號設置,這會單獨影響到可讀的體驗,不少狀況下,你可能須要爲xlarge配置大些的字號。
總之,確認你的應用符合Best Practices for Screen Independence。
爲平板電腦或相似設備升級或開發新的應用
Upgrade or Develop a New App for Tablets and Similar Devices
若是你想開發所有運行在Android 3.0的平板類型設備上的應用程序,那就須要使用Android 3.0新的API,本節介紹可用的一些新特性。
聲明最低的系統版本
當你建立Android 3.0的項目時,首先要作的就是設置android:minSdkVersion爲11,例如:
<manifest ... >
<uses-sdk android:minSdkVersion="11" />
<application ... >
...
<application>
</manifest>
針對Android 3.0平臺,系統會自動爲你的每個activity應用新的主題。
另外,也會爲每一個activity使用Action Bar。
使用Action Bar
Action Bar是爲每一個activity提供的用於替換屏幕頂端傳統標題欄的控件,一般,在它的左側跟在Activity標題後邊包含應用程序圖標,在右側是選項菜單中的可用項。
在你的菜單資源中增長showAsAction=」ifRoom」,可使得選項菜單就像「活動項目」同樣直接出如今Action Bar中。另外,也能夠在其中加入像標籤同樣的導航功能,可使用應用程序圖標導航到主activity,或者向上返回到activity歷史。
更多信息請參考Using the Action Bar。
使用fragment分離activity
在Activity中Fragment提供分離用戶行爲和接口的表現方式。你能夠在一個activity中合併多個fragment以生成多面板的UI,也能夠在多個activity中重用fragment。能夠認爲一個fragment就像一個activity中的模塊,它提供了本身的生命週期,接收用戶的輸入事件,而且能夠在activity運行時添加或移除。
例如,一個新聞應用程序可使用一個fragment在左側顯示標題列表,使用另外一個fragment在右側顯示文章內容——這些fragment出如今一個activity中,每一個fragment都有本身的生命週期,單獨處理用戶的輸入。所以,用戶不是在一個activity中選擇標題而後在另外一個activity中閱讀內容,而是能夠在同一個activity內既選擇又閱讀。
更多信息參考Fragments文檔。
使用新的動畫API實現變換
全新的可伸縮的動畫框架容許你將動畫效果應用到任何對象的任意屬性上(View,Drawable,Fragment,Object等等),一般,你能夠爲對象的int,float和16進制的顏色值定義不少動畫因素(例如持續時間,重複次數,插入器等),當一個對象有屬性使用了這些類型,你還能夠隨時改變這些值以影響動畫效果。
View類也提供了新的API用於支持新的動畫框架,使你能夠很容易的在activity佈局中使用2D和3D變換,而且爲在佈局文件中定義位置,方向,透明度等對象屬性提供了可能。
更多信息請參考Property Animation文檔。
啓用硬件加速
如今經過在配置文件的<application>或<activity>元素中設置android:hardwareAccelerated=」true」能夠爲你的應用程序使用OpenGL渲染器,硬件加速的好處就是使動畫、滾動更加平滑,提升了用戶接口的性能和響應速度。當啓用硬件加速時,請確認你的程序在支持硬件加速的設備上作過完整的測試。
加強的窗口小部件
窗口小部件容許用戶在Home界面直接從你的應用程序中獲取信息而且與運行中的服務(例如預覽郵件或控制音樂播放)交互。Android 3.0經過集合建立的ListView,GridView和新增的StackView的方式加強了窗口小部件的功能,這些小部件容許你進行更多的交互,例如使用滾動列表,能夠經過RemoteViewsService自動的更新數據。
另外,可使用小部件爲應用程序建立預覽圖(在Android 3.0 AVD中已經內置)並經過android:previewImage進行引用,這樣用戶就能夠看到以前加入到主屏幕中的應用程序預覽。
增長其餘新特性
Android 3.0增長了不少有價值的新的API,例如拖放API,新的藍牙API,系統級的剪貼板框架,被稱爲渲染腳本的新的圖像引擎等等,更多信息,請參見Android 3.0 Platform文檔。
爲超大屏幕發佈應用
你須要決定你的應用程序是隻爲平板類型的設備(典型的是超大(xlarge)設備)開發仍是爲全部種類的屏幕大小開發。
若是你想對全部屏幕尺寸有效(例如爲全部手機和平板設備),那什麼也不用作,默認的,應用程序將android:minSdkVersion設爲4或者更高,就會自動調整大小以適應屏幕尺寸。
若是你的應用僅爲超大屏幕設計,能夠在<supports-screens>中僅支持超大屏幕,而將其餘的設成false,例如:
<manifest ... >
...
<supports-screens android:smallScreens="false"
android:normalScreens="false"
android:largeScreens="false"
android:xlargeScreens="true" />
<application ... >
...
<application>
</manifest>
使用這樣的聲明,就指定了你的應用只支持超大屏幕的設備,像Android Market這樣的外部服務會使用這一信息從不是超大屏幕的設備中過濾你的應用。
參考示例代碼
不少新的特性不只在Android 3.0 Platform是進行了描述,並且爲了幫助你理解用法還提供了示例代碼。獲取示例可使用Android SDK管理器從SDK庫中下載(「Samples for SDK API 11」)。下載完後能夠在<sdk_root>/samples/android-11/中找到,下面的列表能夠幫你快速找到關心的特性:
* HoneyComb Grllery:演示了不少Android 3.0中新的API,包括fragment,Action Bar,拖放,動畫。
* Fragments:演示fragment佈局,回退棧,狀態存儲等
* Action Bar:演示Action Bar特性,例如選項卡,圖標,活動項等。
* Clipboard:演示使用剪貼板進行復制粘貼操做。
* Drag and Drop:演示使用新的View事件進行拖放操做。
* Multi-choice List:演示如何爲ListView和GridView提供多項選擇。
* Content Loaders:演示使用新的Loader API異步加載數據。
* Property Animation:使用不少例子應用新的動畫API。
* Search View Widget:演示在Action Bar上使用新的搜索控件。
* Renderscript:使用不少不一樣的應用來演示經過學習渲染腳本進行計算和3D圖像處理。