Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
Microsoft 平台设备开发最佳实践指南
版本 1.0
作者:Jason Alderman
Jim DonaghyMichael WolfUmesh PatelYasser Shakir
目录简介.................................................................................................................................................................6
选择开发框架..................................................................................................................................................6
Silverlight 开发的优势.........................................................................................................................................6
本机 / Visual C++ 开发的优势.............................................................................................................................6
品牌化与 Chrome 注意事项................................................................................................................................7
混合方法..............................................................................................................................................................7
其他资源..............................................................................................................................................................7
优化用户体验..................................................................................................................................................8
人体工程学与交互设计......................................................................................................................................8
定位控制与触摸目标..........................................................................................................................................9
其他资源............................................................................................................................................................10
不要忘记提供反馈............................................................................................................................................10
屏幕分辨率与布局............................................................................................................................................11
使用 RIA 布局模式.............................................................................................................................................12
导航....................................................................................................................................................................12
手势与操作........................................................................................................................................................13
常用手势和操作................................................................................................................................................14
点击....................................................................................................................................................................14
优点................................................................................................................................................................14
缺点................................................................................................................................................................14
何时使用........................................................................................................................................................14
双击....................................................................................................................................................................15
优点................................................................................................................................................................15
缺点................................................................................................................................................................15
何时使用........................................................................................................................................................15
长按....................................................................................................................................................................15
优点................................................................................................................................................................15
缺点................................................................................................................................................................16
何时使用........................................................................................................................................................16
划动....................................................................................................................................................................16
优点................................................................................................................................................................17
缺点................................................................................................................................................................17
何时使用........................................................................................................................................................17
拖动(一个手指或两个手指)........................................................................................................................17
优点................................................................................................................................................................17
缺点................................................................................................................................................................17
何时使用........................................................................................................................................................18
旋转....................................................................................................................................................................18
优点................................................................................................................................................................18
缺点................................................................................................................................................................18
何时使用........................................................................................................................................................18
Pinch-to-zoom....................................................................................................................................................18
优点................................................................................................................................................................18
缺点................................................................................................................................................................19
何时使用........................................................................................................................................................19
其他资源............................................................................................................................................................19
利用 Windows 7 平台....................................................................................................................................21
从 Silverlight 使用 Windows 7 API.....................................................................................................................21
使用 COM 评估 Windows 7 功能...................................................................................................................21
使用 NESL 更轻松地进行 Windows 7 API 评估............................................................................................22
任务栏................................................................................................................................................................22
触摸....................................................................................................................................................................23
触摸示例........................................................................................................................................................23
Sensor and Location API.....................................................................................................................................26
位置示例........................................................................................................................................................26
使用 VC++...................................................................................................................................................26
使用 Silverlight...........................................................................................................................................29
其他资源............................................................................................................................................................31
电池寿命注意事项.........................................................................................................................................31
网络和服务注意事项........................................................................................................................................32
UX 注意事项......................................................................................................................................................32
查询电池功能....................................................................................................................................................32
其他资源............................................................................................................................................................33
安全性注意事项............................................................................................................................................33
使用受信任的应用程序....................................................................................................................................33
本地数据持久性安全性....................................................................................................................................34
Web / 套接字服务注意事项.............................................................................................................................34
Bitlocker for Enterprise Deployments................................................................................................................34
其他资源............................................................................................................................................................35
优化应用程序性能.........................................................................................................................................35
其他资源............................................................................................................................................................36
结束语...........................................................................................................................................................36
简介
Windows 7 平板设备代表一类新设备,它们以支持触摸移动体验为焦点。这个新焦点为应用程序开发人员带来了许多新的注意事项。例如,开发人员现在必须考虑在没有鼠标或触笔时如何实现导航,还要考虑电池寿命、企业应用程序的移动安全性,以及是否支持屏幕定位变化等问题。幸运的是,Windows 7 支持这种新移动设备的开发,它提供了用于多触点支持、笔墨设备、传感器访问(如加速计和 GPS)、电池寿命和其他方面的 API。本文将探讨一些技术,并提供充分利用这些 API 打造世界级平板设备体验的指南。
选择开发框架
由于平板设备运行的操作系统是 Windows 7,所以您可以选择多种语言和开发框架来构建您的应用程序。为了获得性能和电池寿命的最佳综合效果,我们建议您使用 Silverlight 或 Visual C++ 本机代码。这两种技术均与平台深度集成,能够访问设备的各种特性和功能。
Silverlight 开发的优势借助 Silverlight,您可以利用现有的 .Net 体验构建浏览器内外的体验。在 Silverlight 中构建和设计用户界面比在本机代码中容易得多,因为您拥有 XAML 提供的一流图形标记语言和 Expression Suite 提供的工具支持。在 Silverlight 中构建应用程序的其他优势包括:
在托管的运行时环境中编码,不必亲自管理内存 与 .Net 和 Windows Phone 应用程序共享代码 查找和安装应用程序更新的运行时支持 无需为应用程序创建安装程序 低权限的用户也可安装您的应用程序 用来创建 Windows 7 平板设备应用程序的 Mac OS 版本的跨平台环境,以及通过提高安全权限实现
在浏览器之外(OOB)运行的能力。
本机 / Visual C++ 开发的优势使用本机代码构建应用程序可以最大限度地提高性能与控制,同时还能利用您现有的 Visual C++ 技巧和代码库。此外,本机代码应用程序还享有以下好处:
内存使用的更精细控制 无需封装 COM 层即可完全访问 Windows API
与第三方未托管库集成 强大的设备集成 可以访问 DirectX API
完全访问所有资源
品牌化与 Chrome 注意事项相对于 Silverlight 应用程序,本机代码开发在定制应用程序品牌方面具有一些优势。如果使用本机代码,安装体验将更具可定制性。而如果使用 Silverlight 浏览器外应用程序,您则可以享受非常流畅、标准和简单的安装和更新体验。然而,这样做的代价是可定制性。借助本机应用程序,您可以拥有一个更加品牌化的安装程序。但如果需要的话,也可以为 Silverlight 应用程序创建一个脱机安装程序(参见本节的“其他资源”部分)。在本机代码环境中,您的应用程序的启动体验和窗体 chrome 同样更具可定制性。尽管您可以从 Silverlight
浏览器外应用程序中移除窗体 chrome,但窗体的形状必须是矩形,而且适用于圆窗角的选项十分有限。比较之下,本机应用程序窗体可以是不规则形状。启动时,浏览器内 Silverlight 应用程序可以有一个自定义的预加载程序,该程序显示为应用程序负载,但浏览器外 Silverlight 应用程序可能没有此程序。当然,本机应用程序可以在启动时显示一个初始屏幕。
混合方法您可能已经确定,最佳方法就是结合使用本机代码库和 Silverlight 用户界面。在本例中,将通过 COM 接口公开未托管代码,以供提高了权限的 Silverlight 浏览器外应用程序使用。稍后我们将在本文中详尽讨论访问本机代码与 Silverlight 应用程序集成的问题,并提供一些例子。
其他资源http://www.silverlight.net/getstarted/overview.aspx
http://www.silverlight.net/learn/tutorials/silverlight-4/advanced-silverlight-out-of-browser-introduction/
http://timheuer.com/blog/archive/2010/03/25/using-sllauncher-for-silent-install-silverlight-application.aspx
http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/features
http://download.microsoft.com/download/7/8/d/78da8ec9-8801-42e5-89e5-3809386f1316/Silverlight
%20Deployment%20Guide.doc
http://download.microsoft.com/download/7/8/d/78da8ec9-8801-42e5-89e5-3809386f1316/Silverlight
%20Deployment%20Guide.doc
优化用户体验人体工程学与交互设计设计平板设备应用程序时,需要考虑人体工程学——考察平板设备的形状对持有平板设备的用户使用设备上软件的方式有什么影响。在传统软件开发中,用户坐在台式机前,而移动开发用户则单手持有移动设备,Windows 平板设备的重量与尺寸多种多样,可以单手或双手持有,或者放在桌子上。
考虑您的目标设备的重量。有些平板设备的重量以英镑为单位,而其他平板设备可能以盎司为单位;有些平板设备与标准拍纸簿或笔记本电脑一样大,而其他平板设备可能小如一本平装本小说。这种差异极大地影响了用户持有和触摸这些设备的方式。用户是可以用一只手像拿平装本小说那样持有平板设备,或者像拿笔记本一样用前臂托着它,抑或是像拿相框一样一手托住一边?
考虑将要使用应用程序的环境。您可能想使用内置传感器(比如光线传感器或照相机)来提高易读性,使设备对户内外使用都适合。
还要考虑用户的手应放在平板设备屏幕周围的什么位置上。用户必须只用一只手进行操作吗?他们需要腾出两只手来吗?了解这些信息对您判断如何最大程度地减少交互有帮助,必要时可借助语音 API 来腾出双手。
尽量避免重复的或对身体要求极高的动作。例如,不要要求用户在只有一只手能够持有和操作平板设备的情况下,在地图上进行双指缩放(pinch to zoom)。重复或有难度的动作可能导致用户感觉受挫,在最坏的情况下,反复的压力会导致用户受伤害。
通常,您应该设计正确的人体工程,具体方法是 (1) 利用 Windows Touch,使用简单和小幅的肌肉动作来取代复杂和/或大幅的动作,(2) 将应用程序中的控制与动作定位到与离用户双手较近的位置,(3) 在可行的情况下,考虑使用语音 API 进行用户交互。
定位控制与触摸目标在人机交互领域中,费茨定律是一个非常重要的定律。它的基本观点是,如果用户必须移动到某个目标区域(目的是点击或点击它),移动到该目标的时间与到目标的距离和目标的大小有关。这听起来很直观——如果目标距离很远并且/或者目标尺寸很小,移动到目标需要花费较长时间,或者说至少准确到达目标的时间较长。尽管费茨定律适用于所有类型的应用程序设计,但在涉及触摸或触笔的界面中,这条定律甚至更为重要。例如,使用诸如鼠标这样的输入设备时,位于屏幕角落的目标(如 Windows 的“开始”按钮)更容易到达,因为当您到达屏幕边缘时,光标就会停止移动;您不可能越过目标设备。这些规则在以触摸为主的平板设备上同样适用,但略有不同。
考虑上下文弹出式菜单的使用;它们比屏幕上的菜单更快,用户必须将手指或光标移动到屏幕菜单上才能激活它们。此外,转盘菜单比线性菜单更快,因为所有第一级选项均与光标距离相等,即使在移动中被越过也仍然会被选中。
考虑用户双手的位置。您无需对所有内容都使用上下文菜单,对于经常使用的操作,可在手指能够轻松触及的地方放置控件或快捷方式。
要知道,通过手实现的交互可能会不明确,交互选项应该考虑用户刚刚触摸过的地方。例如,在实现与触摸有关的转盘菜单时,需要考虑到有些选项可能因为用户的手偏左或偏右而变得不够明确。
显然,手指与鼠标这样的输入设备不同;如果您要从为非触摸输入设备设计的桌面应用程序中移植软件,一定要牢记这一点。Windows Touch 的指导原则建议:点击目标的面积至少要有 1CM2;如果目标小于这个尺寸,指尖一次触摸很难命中,因此要尽量避免目标面积太小。平板设备的分辨率不同,因此,在某个设备上,1cm 宽度可能有 27 个像素宽,而在分辨率较高的屏幕上,可能是 40 个像素宽。为了防止错误,可以让触摸目标变大,或者在它们周围提供足够大的空间(至少几毫米)。一项通用技术是使用“冰山方法”:提供的目标相对较小,但赋予它的不可见点击区
域比按钮本身要大得多。这项实践鼓励用户力争选中目标,但如果选不中也可以原谅。冰山方法可以和预测算法结合起来使用,让目标的不可见点击区域变得更大,从而让下一次点击更加可能命中目标。
较大的、间距匀称的按钮较为理想;较小的、间距均匀的按钮也可以用,特别是在结合使用冰山方法之后。没有间距的大按钮仍然有效,但没有间距的小按钮无疑会导致输入错误。通常,按钮越小,它与其他按钮之间的间距应该越大。
考虑开发线框或 Sketchflow原型,以测试您的设计和布局是否适用于真实场景。可以使用一个简单的线框来快速评估和测试可用性。甚至在平板设备无法用于测试时打印屏幕,以便按比例缩放它们,将它们粘贴到纸板或木板上,这样做可以让您感觉到用户使用您的软件的场景。
其他资源http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx
不要忘记提供反馈在桌面计算机上,交互设计者通常会提供一些视觉线索,提示您鼠标正处于目标之上,比如悬挂或 MouseOver 状态,这样您就知道可以单击它了。但在触摸屏上就没有这些提示。记住:在触摸屏上,悬挂状态是无用的。因此,您需要额外确认,屏幕上可触摸元素的可视化设计让它们看起来都像是可触摸的,并包含交互状态作为提示。
查看真实世界中可触摸和可拖拽的控件,并模仿它们的设计风格。 如果一个对象是可拖拽的,则考虑给它提供一条控制线(如滚动拇指),但要确保控制线与移动
方向是垂直的,就像在真实世界中一样。 为点击某一个项的用户提供反馈。因为不存在悬挂状态,而且(通常)也会感觉和听到的点击机械设备(比如鼠标键)发出的声音,您需要让用户知道他们已经成功命中目标按钮。可以始终为点击提供可视化反馈。还可以考虑在按下按钮时添加听得到的点击声音,或者震动(触觉反馈)。
如果支持触觉或听觉反馈,应将它设为可禁用选项;因为声音和震动会消耗电池电量,而且用户可能需要安静地运行应用程序。
尽可能使可视化反馈远离用户的手边。使用滑块时,设置轨迹的值和记号,让这些出现在滑块之上而非之下,以防被用户的手指挡住。类似地,还要考虑用户的手可能从屏幕的一侧接触滑块的情况,将值和记号的显示位置设置好,不要让它们出现在用户的手下面。对于工具提示和弹出菜单,也应该考虑同样的事项,比如指示虚拟键盘上哪个键被按下的弹出提示。组合框弹出窗口和菜单可能需要向上、左或右移动,但不会向下移动;在智能手机和小型触摸屏上经常会使用微调控件(模式 ListBox)替换组合框,但在高分辨率的平板设备上,使用 ComboBox 控件通常更有效。
除了控件之外,手势也应该获得可视化反馈。划动速度很快,它们的反馈可能是已计划好的操作。像滚动或旋转这样的操作将立即获得反馈,触摸之处发生变化,而且随手指的移动成比例发生变化。当操作受到约束时,可以提供反馈;当用户滚动到可滚动区域末端时,可以使用一种弹性效果——允许内容滚动过区域的末尾,然后快速弹回——这样用户就不会认为平板设备已经停止注册其触摸操作,而是在可以进一步滚动时继续输入。其他手势,也可以简述为更多抽象动作,可能需要某些种反馈,以便让用户知道他们在屏幕上绘制的手势正被平板设备注册。Microsoft Surface 上的手指轨迹或水纹模拟就是一个例子。
最后,如果在平板设备上完成操作的时间超过 0.2 秒,您应该为用户提供反馈。设计应用程序时,要将由于计算或网络延迟而需要花很长时间完成的操作考虑在内。可以将反馈内置,以便让用户了解当前情况,这样才不致让他们误以为平板设备没有响应。
考虑用户可能会在偶尔联网的情形下工作,因此网络延迟也应该成为用户体验的一部分。 在等待时间可以计算时,可以使用进度条;当持续时间未知或太短而无法计算时,可以使用不确
定进度条或微调控制项。
在模式对话框中显示进度,除非这些操作不会阻止用户继续下一个步骤。如果是这种情况,可在应用程序中的某个可见、一致的位置上放置状态通知,作为用户最近操作的可视化提示。
考虑在 Windows 任务栏中使用进度条和覆盖图标来显示应用程序的状态。
屏幕分辨率与布局除了以上人体工程学与交互设计方面的准则之外,还要设计屏幕布局,以便充分利用要运行应用程序的平板设备的物理性状。在 Windows Phone 7 中,所有设备都是 480x800 像素的,而且大致都是相同的物理维度。平板设备的尺寸和分辨率多种多样。常见的分辨率包括 7”、9” 和 10” 显示器上的 1024x600、1280x800 和 1366x768。正如上面讨论的那样,我们很关心按钮区域的物理大小,以便了解该尺寸对于手指而言是否足够大。即使平板设备上的分辨率相同,它的物理维度也可能不同(比如 8” 对角线和 9” 对角线),这意味着一台平板设备上 1CM2 范围内可能包含比另一台平台设备上更多的像素,或者说在平板设备之间,字体大小的物理尺寸可能不一致。
当您设计应用程序时,知道哪台平板设备或哪些平板设备是您的目标。如果您的目标平板设备具有相同规格,您可以确切地知道您的设计在所有用户手中会是什么样子。您在设计屏幕布局时,就可以知道插图和文本将以相同方式出现。
如果为多种平板设备设计应用程序,则需要考虑使用多种布局主题。还要设置控件的维度,并按照一种基准系统量度、以一致的方式设置布局间距,并交换风格以适应正确的分辨率和设备。
对于网页,不固定和固定的布局分别具有其独特的优势。如果您了解自己的平板设备,就可以使用固定的布局,但您将需要固定方向,或者为横竖两个方向设计固定布局。总而言之:使用灵活列宽的不固定布局可以灵活调整,获得实际可用的屏幕。
如果应用程序显示了一些文本内容,您需要考虑页面长度,并在分页卡和长长的、滚动的单屏之间进行选择。如果文章较短(打印出来少于 10页),滚动是较适用的位置指示方式。如果内容较长(篇幅属于中长),分页卡的效果更好。使用分页时,需要考虑方向;如果使用不固定布局并改变方向,页码也将发生变化,除非您在一个方向上显示多个页面,并确保它们的页码正确。
使用最小的滚动栏,当用户主动滚动至最大屏幕时,只显示滚动栏,并保持内容处于屏幕前面部分和中心位置。
在设计中要考虑屏幕方向(横向和竖向)的变化。有时候,一种简单的不固定布局可以同时适用于两个方向,但您应该考虑对不同方向提供不同体验的选项。一定要在目标设备上测试自动转向的性能。
使用 RIA 布局模式有几种 RIA 布局设计模式可为您的信息架构提供帮助(参见“其他资源”部分)。当横向显示时,大多数触摸屏设备都使用 Master-Detail 布局或 Column-Browse 布局(很像在 Outlook 邮件中,收件箱消息列表位于左侧的一小栏中,而消息本身位于右侧的一个窗格中)。在竖向显示时,隐藏菜单和组合框中的用户界面元素,以便最大限度地利用空间。让与交互无关的窗体 chrome保持最小化状态,使用户能够集中精力处理目标任务,从而避免分心。
导航大多数触摸屏设备(Windows Phone 7、iOS 和 Android)都使用一种空间导航模式,应用程序步骤或状态的前进表现为向右移动,而后退则表现为向左移动。高级导航(在应用程序与其他应用程序或启动程序之间)通常表现为 3D 空间内的向内和向外移动。使用空间导航可以帮助用户构造应用程序的意境地图,并在其中找准方向。新的导航模式,比如旋转风格、透视和全景界面,也是触摸式应用程序设计的有用描述模型。请参见本指南结尾处“其他资源”链接中的 Windows Phone 7 Design Guidelines。
使用简单的小手势进行短距离导航(在一个应用程序某一部分的多个屏幕之间),而使用较大手势进行较长距离导航(在一个应用程序的各个部分或者多个应用程序之间)。例如,在一个电子书籍阅读器中,可以通过点击一本电子书的各个页面,在页面之间移动,而全屏的大幅挥动则是在各章之间移动。由于支持轻松删除不必要的内容,所以使用简单的导航块还可以提高性能和稳定性。关于导航块的更多信息,请参阅“其他资源”。
手势与操作在 design guidelines for Touch applications 中, Microsoft 概括了三种类型的交互:
1. 手势:“一个或多个手指在屏幕上快速移动,计算机将其解释为一个命令,而不是一次鼠标移动、写字或绘图。”
2. 划动:基本上属于键盘快捷键的简单手势。3. 操作:“对象的实时物理处理…输入直接对应于对象在现实世界中对操作做出自然反应的
方式。”这些交互,尤其是操作,模拟了人类与物理对象自然交互的方式。触摸屏交互的最佳设计方式是结合互为补充的手势与控件。开发常用或定制手势时需考虑以下事项:
使用在功能上互为补充的交互,但要使用相似的肌肉运动,这样在它们之间切换就变得很简单。 如果同大部分人与数字产品在真实世界中的相似对象的交互方式相比,您的手势不完全相同,也无需担心。手势很简单、非常好记,而且对于使用软件的人很有意义,这一点更为重要。
考虑使用跨多个平台的一致手势,这些平台包括 Windows Phone 7、iOS、Microsoft Surface 和 Android。用户学会使用程序的速度越快,他们的满意程度就会越高,也就更愿意去发现更多有趣的交互。
使交互保持一致的方法之一是使用 Windows Touch 框架中内置的、大量预先定义好的手势、划动和操作。一般而言,您应该保持动作(划动和点击)的简单性,并把它们控制在屏幕上的相同区域中。例如阅读电子书时,通过在屏幕的左、右边缘点击或划动来翻动书页比较合理。跨越屏幕拖动页面似乎更加“真实”,通过更简单的手势来实现这种效果更为明智,但实现的时候往往会忽略翻页的真实过程。页面十分轻,相对于用手指跨越触摸屏进行精确拖动,简单手势需要的肌肉运动较少(需要的力量也更小)。
重复性动作(比如通过拖动进行翻页)的大范围移动操作很容易上手,因此用户可以快速地进行操作,但是用户可能很快就会感到厌倦。因此要确保提供了其他交互选项,支持以更快的方式进行相同的操作。在翻页示例中,可以考虑提供一个光标手势和/或一个下一页按钮。
常用手势和操作下面是一个常用手势和操作列表,介绍了使用它们的最佳位置及其缺点。
点击
点击是使用单个手指按压屏幕,然后快速离开屏幕,通常与鼠标单击的使用方式相同。优点
这是可以在触摸屏上执行的最简单的手势之一,它仅需上下移动几毫米。缺点
根据用户手指大小的不同,手指可能会遮挡点击目标。点击(和一般的触摸)没有悬停状态,无法让用户了解他们是否对准目标。点击目标具有最小大小。
何时使用按照 Kicker Studio 的 Dan Saffer 的话来说,“点击是一种新型单击方式。”或者说触摸设备上的点击与桌面设备上的单击类似。使用点击可进行所有标准的用户界面交互,比如通常使用单击的地方都可以使用点击,尤其是单击按钮或图标时。记住前面介绍的关于用户应该点击的屏幕位置(相对于手定位)的指南。
双击
双击是使用单个手指按压屏幕,然后快速离开屏幕,快速重复该动作两次。它通常与双击 (double-click)
的使用方式相同。
优点与点击一样,双击也是一种简单手势,它与用户使用鼠标等输入设备进行双击类似。
缺点双击并不总是很精确。在一行连续单击两次时,鼠标相对来说比较容易保持稳定,而手指并不总是这样。
何时使用可使用点击时,请避免使用双击,尤其是像启动应用程序这样的操作。使用双击在屏幕上进行次要操作(缩放或切换模式),并使用点击进行主要操作(选择或启动操作)。在缩放界面上,比如网页或地图,双击常用于缩小或放大一个区域,而点击则用来跟踪链接或进行选择。
长按
长按也称为“按住”,是使用单个手指按压屏幕并保持一段时间(通常是 1 秒)。它通常用于显示上下文菜单,与右键单击很像。
优点长按几乎是所有触摸屏系统用来显示上下文菜单的一种方式。它支持在手指按住的任何地方附近显示操作。
缺点长按手势很难发现——当人们不熟悉触摸屏时,不知道尝试使用它。默认情况下,Windows 上的长按会在屏幕的触摸区域周围显示一个有意的动画,即圆圈。此反馈请求用户按住手指,直到动画完成,然后看看会发生什么。如果您覆盖了(或没有看到)默认的长按动画,则应实现一种类似缓慢开始、快速完成的动画,鼓励无经验用户使用长按。记住,由于越来越多的人习惯于在智能手机上使用此手势,因此在平板设备和其他触摸屏设备上使用该手势会更容易。
何时使用在您需要显示上下文菜单时使用长按。一些应用程序使用长按将模式切换为编辑模式,或者提供模式覆盖,但是为了保持一致,您应使用长按显示上下文菜单。
划动
如前所述,划动是快速、简单的单方向手势,相等于键盘快捷键。Windows Touch 有 8 种内置划动手势,如下所示。- 上/下 = 键盘的向上和向下滚动- 左/右 = 向后导航和向前导航- 斜上向左 = 删除- 斜上向右 = 复制- 斜下向左 = 撤销- 斜下向右 = 粘贴
优点内置到了操作系统中。在没有键盘时可提供帮助。
缺点在 Silverlight 4 中没有内置这些手势,并且必须手动或者使用本文档附录中提及的许多触摸库开发这些手势。
何时使用划动可当作上述键盘快捷键使用,或者用于导航或编辑操作,根据上下文在应用程序中发挥相应的作用。(示例:向左或向右划动可用于向左平移或向右平移,点击即可停止。)
拖动(一个手指或两个手指)
使用一个手指按压触摸屏并在屏幕上移动称为拖动。它是平移一个可滚动界面时最常使用的操作。一些应用程序使用两个手指进行滚动,这样他们就可以使用单个手指拖动项目或选择的内容。
优点滚动是最简单的操作之一,因为它是在一个方向来回移动手指。
缺点当需要使用多个手指进行拖动或滚动时,未经培训的用户可能会对操作感到困惑。如果使用相同的操作来拖动项目,选择或移动它们并同时滚动它们,这种设置也会让用户感到困惑。
何时使用尽可能使用一个手指进行滚动。如果需要拖动项目以对它们进行重新排序,或者在可滚动列表中选择它们,则将列表编辑和列表滚动保持为两种独立的模式。
旋转
将两个手指放在触摸屏上,并以相反的方向移动手指(以两个指尖之间的中点为中心),这是一种用于旋转的操作。
优点旋转的工作方式与现实世界中的一样。
缺点有时很难使用一个手进行旋转,尤其是一个手拿着平板设备时。
何时使用旋转可用作对象操作,也可用作锁定或解锁(根据上下文而定)屏幕上项目的一种手势。
双指缩放
将两个手指放在触摸屏上,然后相向或背向移动两个手指可使手指下方的画布变小或变大。优点
由于在公共域的多年使用,几乎所有人都已学会了如何进行双指缩放。
缺点如果一个手正拿着触笔或平板设备,则很难使用这个手进行双指缩放。通常还有很多交互操作有待发现,并且用户可能不确定什么是可缩放的,而什么是不可缩放的。
何时使用使用点触来缩放大块信息。如果用户正拿着平板设备或触笔,想要进行缩放操作,则不要使用点触进行缩放,而是使用简单的滑块。
其他资源下面是平板设备设计和开发的推荐读物列表。
Embracing the digital book — Craig Mod
Analysing a Touch-to-Desktop UI port using Fitts’s Law: Reeder for Mac Beta | Daniel Kennett
Is Realistic UI Design Realistic? | Aaron Weyenberg
Subtraction.com: My iPad Magazine Stand
Information Architects – iPad: Scroll or Card?
Subtraction.com: A Popular Misconception
LukeW | Touch Gesture Reference Guide
LukeW | Touch Gesture Diagrams
Gesturecons - Multi-Touch Icons
Gesturcons: an icon language to describe natural user interface gestures- Experience Design by Ron
George
LukeW | Touch Target Sizes
LukeW | Design for Mobile: What Gestures do People Use?
9 Touch Gestures in Windows 7 for Multi-touch Magic
Layout
Touching Windows 7 - Engineering Windows 7 - Site Home - MSDN Blogs
http://designingwebinterfaces.com/ria-screen-layouts
http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/03/18/windows-phone-7-
series-ui-design-amp-interaction-guide.aspx
http://www.amazon.com/Designing-Interactions-Bill-Moggridge/dp/0262134748/ref=sr_1_fkmr0_2?
ie=UTF8&qid=1296007906&sr=8-2-fkmr0
http://www.amazon.com/Ordering-Disorder-Principles-Design-Voices/dp/0321703537/ref=sr_1_1?
ie=UTF8&s=books&qid=1296007906&sr=8-1
http://www.amazon.com/Tapworthy-ebook/dp/B003WQB2U6/ref=sr_1_3?
ie=UTF8&qid=1296008269&sr=8-3
http://www.amazon.com/Designing-Gestural-Interfaces-Touchscreens-Interactive/dp/0596518390/
ref=sr_1_2?ie=UTF8&s=books&qid=1296008342&sr=1-2
http://code.msdn.microsoft.com/nesl
http://msdn.microsoft.com/en-us/magazine/ee336016.aspx
http://msdn.microsoft.com/en-us/magazine/ee336016.aspx
http://code.msdn.microsoft.com/WindowsTouch
http://blog.wpfwonderland.com/2009/06/29/developing-win-7-multi-touch-apps-without-multi-touch-
screen/
http://www.microsoft.com/whdc/device/input/slate-pc-design.mspx
http://msdn.microsoft.com/en-us/magazine/cc163869.aspx
http://blogs.msdn.com/b/e7/archive/2009/04/23/ink-input-and-tablet.aspx
http://www.microsoft.com/whdc/device/input/DigitizerDrvs_touch.mspx
利用 Windows 7 平台
Windows 7 公开了支持开发人员构建富有吸引力的、易用的应用程序的 API,可利用之前章节介绍的一些推荐和移动平台。其中包括新任务栏和触摸功能,以及对位置和传感器数据的访问。从 Silverlight 使用 Windows 7 API
如果安装了 Windows 7 SDK,可从本机代码直接访问 Windows 7 API。但是由于 Silverlight 在沙盒中执行,因此您必须实例化公开 Windows 7 API 的 COM 对象。对于名为 Native Extensions for Microsoft Silverlight
(NESL) 的许多本机类而言,Microsoft 已提供了实现此操作的更简单的方式。注意,每种方法都要求 Silverlight 应用程序是已提升权限的浏览器外运行的应用程序。
使用 COM 访问 Windows 7 功能下面是通过 Silverlight 浏览器外应用程序提供的 COM 访问 Location API 的一个示例。(参见下方代码,了解使用 Location API 的详细解释和示例。)
// The app must have elevated permissions (trusted app) to utilize COM+
if (Application.Current.HasElevatedPermissions)
{
try
{
// Create the LatLongReportFactory object. This requires a Location Sensor to
be installed on the user's machine.
using (dynamic LatLongReportFactory =
AutomationFactory.CreateObject("LocationDisp.LatLongReportFactory"))
{
//...
}
}
catch (Exception e)
{
txt.Text = "Error: " + e.Message;
}
}
else
txt.Text = "You do not have elevated permission to test this application";
使用 NESL 轻松访问 Windows 7 API
安装了 NESL 时,它封装了 COM 调用,并显示了使访问本机 Windows 调用变得很轻松的 Silverlight 对象。下面是一个通过 NESL 使用 Windows 7 语音识别引擎的示例。(参见提供的 SpeechExample,了解完整的解决方案,该实例使用语音命令来导航应用程序。)
// Initialize recognizer
_recognizer = new SpeechRecognitionEngine();
// Attempt to set the recognizer's default audio device (microphone, headset with
microphone etc)
try
{
_recognizer.SetInputToDefaultAudioDevice();
}
catch
{
MessageBox.Show("No audio devices found for speech recognition. Please connect a
device and restart the application.");
return;
}
任务栏Windows 7 中的新任务栏功能支持快速访问文档,减少了触摸导航工作。例如,开发人员可添加链接,从程序的任务栏跳转列表到应用程序中上一次使用或经常使用的视图。用户还可以使用 IE 9 将您的 Web 应用程序与跳转列表直接固定在一起。如上所述,许多用户不会激活鼠标悬停状态,因此不应仅依靠活动任务栏预览功能在应用程序窗口之间进行导航。由于平板设备通常具有比便携式计算机和台式机功率更小的 CPU,因此一些任务可能需要更长的时间来执行,为此,您可能想要利用 Windows 7 任务栏图标来托管进度栏,以便从应用程序内部进行更新。下面是一个示例,使用 Native Extensions for Microsoft Silverlight (NESL) 来演示如何从此进度栏更新到 Silverlight 应用程序。(参见提供的 TaskbarExample,了解完整的解决方案。)
// Increment the progress value
_currentProgress += PROGRESS_DELTA;
// Update progress bar in UI
progressBar.Value = (double)_currentProgress;
// Update the taskbar icon's progress value
TaskbarButton.Current.SetProgressValue(_currentProgress, MAX_PROGRESS);
触摸
Windows Touch API 使平板设备开发人员可以听取和响应触摸事件。触摸事件可能是从单点或多点(多点触控)。此外,常见手势(参见前面的“手势”一节)已封装到了 WM_GESTURE 窗口消息中,以便轻松响应缩放、旋转、点击和平移操作。
IManipulationProcessor 和 IInertiaProcessor 界面支持平板设备开发人员跟踪和记录屏幕上对象的变更,以响应触摸输入。例如,当用户在屏幕上划动一个对象时,开发人员应使用 IManipulationProcessor 方法设置屏幕上对象移动的恰当速率,并使用 IInertiaProcessor 将对象从屏幕的边缘弹回,然后慢慢停止。
触摸示例在下列示例中,当用户在 MFC 应用程序中向上、下、左、右平移图像时,我们可以拖动图像。参见提供的 GestureSample,了解完整的解决方案,其中包括许多高级手势。MFC 将 WM_GESTURE 消息映射到消息处理程序,之后我们可以对它们进行重写,以便根据触摸输入将它们纳入我们的操作。
class CGestureSampleDlg : public CDialogEx
{
// Construction
public:
// ...
// Windows 7 Gesture Support Overrides
virtual BOOL OnGesturePan(CPoint ptFrom, CPoint ptTo);
virtual BOOL OnGestureZoom(CPoint ptCenter, long lDelta);
virtual BOOL OnGestureRotate(CPoint ptCenter, double dblAngle);
virtual BOOL OnGesturePressAndTap(CPoint ptFirstFinger, long lDelta);
virtual BOOL OnGestureTwoFingerTap(CPoint ptCenter);
// ...
};
接下来,要进行检查,确保我们的硬件支持触摸输入,并获取硬件支持的触摸点数。// Is Touch Enabled Hardware available on this machine?
BYTE digitizerStatus = (BYTE) GetSystemMetrics(SM_DIGITIZER);
if ((digitizerStatus & (0x80 + 0x40)) == 0) //Stack Ready + MultiTouch
{
AfxMessageBox(L"No touch input is provided by this hardware.");
this->m_WarningText.SetWindowText(_T("Gesture (Touch) Features are not
Available on this Device"));
return FALSE;
}
// Check out the number of Touch inputs that the Hardware supports
BYTE nInputs = (BYTE) GetSystemMetrics(SM_MAXIMUMTOUCHES);
使用 m_gestureConfig 成员变量,我们可以启用或禁用特定手势,甚至是手势的一部分(比如垂直或水平移动)。// Get The Gesture Config customization object
GetGestureConfig(&m_gestureConfig);
// Need to enable the Rotate Gesture option in Gesture Config
m_gestureConfig.EnableRotate();
// Set this application's gesture configuration
SetGestureConfig(&m_gestureConfig);
最后,在我们的 OnGesturePan 重写定义中,通过将 TranslateTransform 应用于图像处理了手势。BOOL CGestureSampleDlg::OnGesturePan(CPoint ptFrom, CPoint ptTo)
{
// OnGesturePan Gets Triggered when the user pans on the screen
// ptFrom shows the initial position that the user dragged from
CString s;
// Log the action
s.Format(L"OnGesturePan called, Panning from (%d,%d) to (%d,%d)", ptFrom.x,
ptFrom.y, ptTo.x, ptTo.y);
m_MessagesBox.InsertString(0,s);
m_MessagesBox.RedrawWindow();
// Calculate the differences of both axes
int dx = ptTo.x - ptFrom.x;
int dy = ptTo.y - ptFrom.y;
// This method pushes the Pan (Translate) Transform onto the Queue
this->QueuePan(dx, dy);
// This sequentially applies the Transformations that are being held in the
queue
ApplyTransformations();
return TRUE;
}
注意,Windows Touch API 对象不久之后可通过 NESL 在 Silverlight 中使用。参见提供的 GestureExample,了解使用 Silverlight 的内置触摸支持的演示。
Sensor 和 Location API
Windows 7 Sensor API 使平板设备开发人员能够从加速计、光传感器和 GPS 等设备访问对其非常重要的数据。您可能想要使用加速计确定方向(有关替代方法,请参见包含的 OrientationSample)。您可能还想根据可用光修改用户界面风格,如在之前的用户体验一节所述。注意,要通过 Sensor API 访问传感器,需要使用 Windows 用户模式驱动程序框架(WindowsUser Mode Driver Framework,UMDF)驱动程序。还必须在控制面板中启用已安装的传感器。
位置示例Location API 基于 Sensor API 构建,并提供了一个 GPS 和 IP Address 查找驱动程序界面,用它们来确定设备的地理位置。在下列示例中,我们使用 Bing Maps 查询了 Location API,以显示用户的当前位置。
使用 VC++
我们可通过 COM 对象从本机代码中访问 Sensor and Location API。参见包含的 LocationAPIExample 文件,了解完整的解决方案。首先,我们创建 ILocation 示例,并检查它,确保它是可以访问的。// Use the ILocation interface to manage location reports, event registration, and
sensor permissions.
CComPtr<ILocation> spLocation;
// First create the COM Object using CoCreateInstance (see:
http://msdn.microsoft.com/en-us/library/dd317657(v=VS.85).aspx)
// for further documentation on the Location API Interfaces.
if (SUCCEEDED(spLocation.CoCreateInstance(CLSID_Location)))
{
// In this example we are interested to retrieving the Latitude Longitude Report
in order to map
// our location
IID REPORT_TYPES[] = { IID_ILatLongReport };
// Request permissions for this user account to receive location data for the
LatLongReport
if (FAILED(spLocation->RequestPermissions(NULL, REPORT_TYPES,
ARRAYSIZE(REPORT_TYPES), TRUE)))
{
MessageBox(_T("Permission to recieve location data was not granted."),
_T("Error"), MB_ICONERROR | MB_OK);
}
// Possible Status options include: NOT_SUPPORTED, ERROR, ACCESS_DENIED,
INITIALIZING, RUNNING. Next query status.
LOCATION_REPORT_STATUS status = REPORT_NOT_SUPPORTED;
// Getting the status of the LatLong Report Type
if (SUCCEEDED(spLocation->GetReportStatus(IID_ILatLongReport, &status)))
{
// The status has now been retrieved.
switch (status)
{
case REPORT_NOT_SUPPORTED:
// Location sensor is not found or enabled.
MessageBox(_T("No sensor detected. Please install a location
sensor and restart the application"));
break;
case REPORT_ERROR:
// There is something wrong with the installed sensor. Try to use
the above sensor.
MessageBox(_T("Internal error with sensor"));
break;
case REPORT_ACCESS_DENIED:
// The user doesn't have permission to use the sensor. May need
to log in as administrator.
MessageBox(_T("Access Denied. You do not have permission to use
the sensor"));
break;
case REPORT_INITIALIZING:
wprintf(L"\nReport is initializing.\n");
break;
}
}
接下来,我们要查询设备的经度和纬度,并通过设置 CHTMLView 的位置,使用经度和纬度向用户显示正确的地图位置。
// The Location Report Object
CComPtr<ILocationReport> spLocationReport;
// Get the Current Location Report Object
if (SUCCEEDED(spLocation->GetReport(IID_ILatLongReport,
&spLocationReport)))
{
// The Latitude Longitude Report Object
CComPtr<ILatLongReport> spLatLongReport;
// Now get the ILatLongReport interface from ILocationReport
if (SUCCEEDED(spLocationReport->QueryInterface(&spLatLongReport)))
{
DOUBLE latitude = 0, longitude = 0;
// Print the Latitude
if (SUCCEEDED(spLatLongReport->GetLatitude(&latitude)))
{
wprintf(L"Latitude: %f\n", latitude);
}
// Print the Longitude
if (SUCCEEDED(spLatLongReport->GetLongitude(&longitude)))
{
wprintf(L"Longitude: %f\n", longitude);
}
// Given that we now have the Latitude and Longitude of our
location we can navigate to it
// on the map.
sprintf (buffer, "http://www.bing.com/maps/?v=2&where1=%f,
%f", latitude, longitude);
CString str(buffer);
// Navigate to Bing Maps with these coordinates
Navigate2(str,NULL,NULL);
}
使用 Silverlight
与本机代码版本相似,在 Silverlight 中我们使用 COM 来访问 Location API。参见包含的 SpeechExample,了解完整的 Silverlight 解决方案。该解决方案将此流程又深入了一步,并提供了位置和地理信息流程的语音命令激活。这可使用户在腾不出双手的情况下轻松导航应用程序。与本机示例一样,首先我们要进行检查我们的设备,确保它们是可访问的。 // Create the LatLongReportFactory object. This requires a Location Sensor to
be installed on the user's machine.
using (dynamic LatLongReportFactory =
AutomationFactory.CreateObject("LocationDisp.LatLongReportFactory"))
{
int status = (int)LatLongReportFactory.Status;
// Parse the object's success status
switch (status)
{
case 0:
// Location sensor is not found or enabled.
// After the sensor is installed, the user can enable the sensor in
the Control Panel.
txt.Text = "No sensor detected. Please install a location sensor
and restart the application";
break;
case 1:
// There is something wrong with the installed sensor. Try to use
the above sensor.
txt.Text = "Internal error with sensor";
break;
case 2:
// The user doesn't have permission to use the sensor.
txt.Text = "Access Denied. You do not have permission to use the
sensor";
break;
case 3:
txt.Text = "Initalizing...";
break;
}
接下来,我们查询位置对象的经度和纬度,并使用 Bing Maps API 在我们的当前位置上显示一个图钉。// Success
if (status == 4)
{
// Get the latitude and longitude from the object
using (dynamic report = LatLongReportFactory.LatLongReport)
{
txt.Text = String.Format("Latitude: {0}\r\n Longitude: {1}", report.Latitude,
report.Longitude);
// Create a push pin based on the location and add to the Bing Map
var pp = new Pushpin() { Location = new Location(report.Latitude,
report.Longitude) };
map.Children.Add(pp);
// Set the current view to location and zoom into an appropriate level
map.SetView(new Location(report.Latitude, report.Longitude), DEFAULT_ZOOM);
}
}
其他资源http://visualstudiomagazine.com/Articles/2010/06/01/Windows-7-Native-Development-with-Visual-Studio-
2010.aspx
http://windowsteamblog.com/windows/b/developers/archive/2009/11/17/programming-windows-7-using-
visual-studio-2010.aspx
http://channel9.msdn.com/Learn/Courses/Windows7#Multitouch
http://msdn.microsoft.com/en-us/library/dd318953(VS.85).aspx
http://code.msdn.microsoft.com/nesl
http://windows.microsoft.com/en-US/windows7/products/features/windows-taskbar
http://windows.microsoft.com/en-US/windows7/products/features/touch
https://svn.cynergysystems.com/projects/microsoft/slatedoc
http://multitouch.codeplex.com/
http://code.msdn.microsoft.com/nesl
电池寿命注意事项
设备上的应用程序总体用户体验受设备的总体用户体验影响。除了 CPU 和内存性能之外,影响总体设备体验并且受开发人员影响的另一个因素是电池寿命。
网络和服务注意事项在平板设备上工作时,最好限制冗余设备的交互和服务调用。尽管在台式计算机上,可使用快速轮询来查询服务,但是在平板设备上,用户体验的直接好处将减少电池和总体用户体验。进行网络和服务集成时,请考虑下列事项。
- 根据需要限制技术使用,比如轮询双工或套接字服务。而不考虑使用选择性轮询解决方案,这可能会降低固定连接的需求。
- 通过 NESL 库使用传感器时,确保根据需要查询数据并且不会通过更改的固定轮询进行访问。尽可根据需要检索数据,以减少发送给这些外部设备和服务的功率。
- 限制使用编码和加密。尽管这些算法对视频和安全性很重要,但是它们也会消耗大量资源。- 考虑选择 REST 和 JSON 而不是标准的 SOAP,以减少数据传输和序列化所需的功率。
UX 注意事项用户体验可直接影响总体性能和电池使用率。尽管颜色选择和 Metro 设计语言(是 Windows Phone 7 上电池寿命的影响因素)对平板设备的影响很小,但是其他性能相关的决策对平板设备的影响却很大。
- 在 XAML 或图像之间进行选择时,如果资产不是动态的,考虑使用图像。布局是资源密集型的操作,使用静态图像可减少资源的使用。
- 考虑到布局阶段是资源密集型的。因此不使用单个布局支持横向和纵向模式,而是使用可视状态和 2 种不同的静态布局来弥补方向更改。
- 视频和图像解码因设备的不同而不同,因为硬件具有多样性。考虑测试选择的多种设备。视频播放在一些平台上消耗的电量更少,而在其他一些平台上消耗的电量更多。
查询电池功能我们可以规划电池优化,也可以规划电池限制。使用 WMI,您可以查询操作系统的电源信息。此数据可用于确保数据是同步的或持久的。下列代码适用了已提升了权限的 Silverlight 浏览器外应用程序中的 COM
和 WMI 来查询剩余的电池寿命百分比。using (dynamic wmi = AutomationFactory.CreateObject("WbemScripting.SWbemLocator"))
{
dynamic IService = wmi.ConnectServer(".", @"root\cimv2");
string qry =
@"Select * From Win32_Battery";
dynamic output = IService.ExecQuery(qry);
int remaining = 0;
foreach (dynamic o in output)
{
remaining = o.EstimatedChargeRemaining;
}
}
其他资源 http://msdn.microsoft.com/en-us/library/aa394074(VS.85).aspx
安全性注意事项
安全性应该是所有设备的首要考虑因素,但是平板设备具有一些独特的安全性注意事项,这与移动设备(而不是其 Windows 台式计算机同胞)具有很多共同点。由于其实体尺寸,增加了其丢失的可能性。而其尺寸与其移动性的结合,使越来越多的用户在公共场合使用它。此外,wifi 和其在偶尔连接的设备上保持更多数据的本质,都决定了安全性没有平板设备的实体尺寸那么重要。
使用受信任的应用程序平板设备的大多数 Silverlight 应用程序都作为完全受信任的浏览器外应用程序进行开发。尽管这确实大大提高了完整的平板设备用户体验,但也带来了一些应考虑的安全性注意事项。
1) 当运行受信任的应用程序时,Silverlight 4 放宽了全屏应用程序的许多安全性限制。2) 应该对应用程序进行签名以确保恰当的客户安装体验。3) 尽管 COM 自动化向 Silverlight 应用程序开发人员公开了许多 API,但是应记住,这些 API 的使用仍
受用户帐户权限的限制。
本地数据持久性安全性偶尔连接网络的平板设备增加了本地数据存储的使用。在设备丢失或被盗时,这种数据存储(独立存储或通过本地文件系统存储)应该是安全的。平板设备上存储的敏感或安全数据应该进行加密以提高其安全性。无论采用本机或 Silverlight 实现,最大的注意事项是确保加密密钥没有存储在应用程序二进制文件或 xap 中。当设计平板设备应用程序的持久层时,应考虑下列事项。
1) 使用 Cryptography 库保护 Silverlight 中的文件和独立存储以加密数据:http://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha256(v=VS.95).aspx
2) 考虑使用同步框架进行同步以及之后的数据备份和擦除 http://msdn.microsoft.com/en-us/sync/default.aspx
3) 如果使用本地数据库存储系统,确保它支持加密,比如 perst
http://www.mcobject.com/perst_database_spec 或 Sql Server Compact
http://technet.microsoft.com/en-us/library/ms172901.aspx
4) 加密算法是资源密集型的。应限制它们的使用,确保安全性开销不会影响电池性能。
Web / 套接字服务注意事项由于平板设备的移动本质(通常使用公共 wifi 网络),因此 web 服务安全性是最重要的考虑因素。应考虑下列事项:
1) 与所有设备一样,当跨网络交换敏感或个人信息时,请使用 HTTPS
2) 当使用套接字服务时,考虑使用 System.Security.Cryptography 库或 WCF 加密服务间的数据3) Silverlight 4 目前不支持 WS-Trust web 服务。如果 WS-Trust 是一个安全性需求,则请考虑开发一
个本机应用程序。Silverlight 5 已公开声明支持 WS-Trust。
用于企业部署的 Bitlocker
Bitlocker 是平板设备的一种出色的解决方案,因为平板设备被错放或丢失的可能性很大。但是,由于平板设备的需求不同,很多平板设备都没有此选项。完全 Bitlocker 保护在有可用 TPM (受信任的平台模块)芯片的设备上最容易进行,并且大多数平板设备都会随 Windows 7 Home Premium 或 Windows 7
Professional 一起提供。Bitlocker 在 Windows 7 Ultimate、Windows 7 Enterprise 和 Windows Server 2008 R2
中可用,并且如果没有 TPM 模块可用,则可使用存储安全密钥的外部 USB 设备启用它。
其他资源http://msdn.microsoft.com/en-us/library/cc972657(v=VS.95).aspx
http://technet.microsoft.com/en-us/library/dd548341(WS.10).aspx.
http://technet.microsoft.com/en-us/library/dd835565(WS.10).aspx
http://msdn.microsoft.com/en-us/library/dd430447(v=VS.85).aspx
http://channel9.msdn.com/Blogs/pdc2008/PC01
http://www.microsoft.com/silverlight/future/
优化应用程序性能
在平板设备上考虑优化性能时,记住这些设备在本质上是移动且资源有限的很重要(同时赋予开发人员完全控制 Windows 7 及其 API 的能力)。与针对智能手机或上网本开发应用程序不同,平板设备通常不会缺少内存资源,但是会缺少 CPU 能力。此外,您必须记住在 CPU 密集型任务和网络时保持 UI 线程可用。在性能优化过程中应考虑下列建议。
由于布局例程,过渡和动画通常对 CPU 有很大影响。考虑不在控件上执行过渡转换,而是使用可视图像,并将位图转换为控件。在 Silverlight 中使用结构控件的一个示例可在这里找到 http://joel.neubeck.net/2009/08/navigation-transitions-with-writeablebitmap/。
在可写位图过渡期间,考虑在过渡期间折叠底层元素,以减少运行的布局数目。 尽管使用多个线程可提高性能,但记住,CPU 不会随着线程数目的增加而增加。可以考虑让用户智能地使用线程处理并等候指示器。
在 Silverlight 中,考虑使用比台式计算机 Silverlight 实现更多的 CacheMode=”BitmapCache”。尽管这将消耗更多内存,但会节省 CPU 周期并增加帧速率。
记住您正在开发的设备的图形硬件。在平板设备分类中,有很多设备类型,并且一些比其他具有更出色的图形能力。最好在尽可能多的设备上测试性能指标,并且不要依赖于您的台式机开发环境。
避免在 Silverlight 中使用 DispatchTimer。如果您的应用程序需要计时器,则考虑使用故事板,或者使用线程创建自定义计时器。
考虑在 web 服务集成中使用 JSON,这是由于其简洁但结构化的本质。 当向磁盘写入文件时,考虑使用二进制序列化以改进读取和写入性能。
其他资源http://msdn.microsoft.com/en-us/library/cc221411(VS.95).aspx
结束语
Microsoft Windows 7 平板设备为开发人员和组织提供了大量机会,它们可利用 .NET 工具和 Windows 提供全新的系统和设备管理功能。尽管这些平板设备是 Windows 7 设备,但是了解以下这一点很重要:平板设备通常消耗的电量较少,并且需要不同的触摸和/或触笔优化体验,以便充分利用其实体尺寸的优势。好消息是,现在,您用来在 Windows 上创建出色体验的所有平台和框架与平板设备上所使用的是相同的。