Optimizing Apps for Android 3.0

本文介绍如何为Android 3.0优化或升级应用程序,包括安装SDK、使用新主题、支持大屏幕、使用ActionBar及Fragment等技术要点。

前言

  本章内容为开发者指南(Dev Guide)/Best Practices/Optimizing Apps for Android 3.0,译为“为Android 3.0优化应用程序",版本为Android3.0 r1,翻译来自"移动云_文斌",欢迎访问它的博客:"http://blog.youkuaiyun.com/caowenbin",再次感谢"移动云_文斌" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组: http://goo.gl/6vJQl


原文

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界面(或解锁界面)出现。

无论如何,你不需要每次重新生成你的应用程序的时候都重新启动模拟器,通常情况下你只需要启动一次并让它保持运行即可。也可以参考下面的提示信息以在首次初始化后减少启动次数。

我们正在努力的解决性能问题并在将来发布,目前,模拟器仍然是在没有真实设备的情况下评估你的应用程序表现和功能的最好途径。

提示:要减少模拟器的启动次数,可以在你利用SDKAVD管理器创建它时允许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应用程序都是前向兼容的,因此,如果你按标准使用了AndroidAPI,你什么也不用做,应用就可以在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资源,但是如果你想为超大的横屏选择资源的话,你应该同时使用xlargeland。例如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:minSdkVersion11,例如:

<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

ActivityFragment提供分离用户行为和接口的表现方式。你可以在一个activity中合并多个fragment以生成多面板的UI,也可以在多个activity中重用fragment。可以认为一个fragment就像一个activity中的模块,它提供了自己的生命周期,接收用户的输入事件,并且可以在activity运行时添加或移除。

例如,一个新闻应用程序可以使用一个fragment在左侧显示标题列表,使用另一个fragment在右侧显示文章内容——这些fragment出现在一个activity中,每个fragment都有自己的生命周期,单独处理用户的输入。因此,用户不是在一个activity中选择标题然后在另一个activity中阅读内容,而是可以在同一个activity内既选择又阅读。

更多信息参考Fragments文档。

使用新的动画API实现变换

全新的可伸缩的动画框架允许你将动画效果应用到任何对象的任意属性上(ViewDrawableFragmentObject等等),通常,你可以为对象的intfloat16进制的颜色值定义很多动画因素(例如持续时间,重复次数,插入器等),当一个对象有属性使用了这些类型,你还可以随时改变这些值以影响动画效果。

View类也提供了新的API用于支持新的动画框架,使你可以很容易的在activity布局中使用2D3D变换,并且为在布局文件中定义位置,方向,透明度等对象属性提供了可能。

更多信息请参考Property Animation文档。

启用硬件加速

现在通过在配置文件的<application><activity>元素中设置android:hardwareAccelerated=”true”可以为你的应用程序使用OpenGL渲染器,硬件加速的好处就是使动画、滚动更加平滑,提高了用户接口的性能和响应速度。当启用硬件加速时,请确认你的程序在支持硬件加速的设备上做过完整的测试。

增强的窗口小部件

窗口小部件允许用户在Home界面直接从你的应用程序中获取信息并且与运行中的服务(例如预览邮件或控制音乐播放)交互。Android 3.0通过集合创建的ListViewGridView和新增的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,包括fragmentAction Bar,拖放,动画。

* Fragments:演示fragment布局,回退栈,状态存储等

* Action Bar:演示Action Bar特性,例如选项卡,图标,活动项等。

* Clipboard:演示使用剪贴板进行复制粘贴操作。

* Drag and Drop:演示使用新的View事件进行拖放操作。

* Multi-choice List:演示如何为ListViewGridView提供多项选择。

* Content Loaders:演示使用新的Loader API异步加载数据。

* Property Animation:使用很多例子应用新的动画API

* Search View Widget:演示在Action Bar上使用新的搜索控件。

* Renderscript:使用很多不同的应用来演示通过学习渲染脚本进行计算和3D图像处理。


### Android TV Launcher Applications Development and Best Practices For developing applications specifically targeted at Android TV devices, developers must adhere to guidelines that enhance usability on large screens optimized for distance viewing. Starting from API level 4, Android has provided comprehensive support for various screen sizes and densities, which includes specific considerations for television displays[^1]. Developers should focus on optimizing layouts so they are accessible via D-pad navigation since touch interaction is less common on TVs. Launcher icons intended for Android TV should be placed within `res/mipmap-[density]` directories instead of drawable folders. This ensures the system selects appropriately sized images based on display characteristics while maintaining resource efficiency across diverse hardware configurations[^2]. When designing an Android TV launcher application: - **User Interface Design**: Emphasize simplicity by minimizing cluttered interfaces; prioritize legibility through larger text elements and clear spacing between interactive components. - **Performance Optimization**: Ensure smooth performance given potential limitations in processing power compared to modern smartphones or tablets. Optimize graphics rendering pipelines and manage memory usage carefully to prevent lag during transitions or animations. ```java // Example code snippet demonstrating how to check if running on a TV device public boolean isTvDevice() { UiModeManager uiModeManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE); return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION; } ``` To provide users with optimal experiences, it&#39;s crucial to test applications thoroughly under conditions mimicking typical living room environments—considering factors like ambient lighting levels affecting visibility—and gather feedback iteratively throughout development cycles. --related questions-- 1. How does one implement effective voice control integration into an Android TV app? 2. What strategies can improve load times when dealing with high-resolution media content on Android TV? 3. Are there any particular design patterns recommended for creating intuitive menu structures suitable for remote controls? 4. In what ways do accessibility features differ between standard mobile Android apps versus those designed explicitly for TV platforms?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值