返回介绍

为 Android 3.0 优化应用程序

发布于 2025-03-09 16:39:58 字数 11544 浏览 0 评论 0 收藏 0

Android 3.0 优化应用程序

版本:Android 3.0 r1

原文

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文