前言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图像处理。