从Build 2015了解Universal Windows Platform的新特性

Build 2015已经过去一月有余,陆陆续续看完了几十节课程录像,看到了许多让作为开发者的我感到振奋的新特性,就在此汇总小节一下。

XAML新特性

RelativePanel和AdaptiveTrigger

UWP应用可以用一套UI适配各种屏幕,其所依仗的就是RelativePanel。RelativePanel中的元素互相依赖来完成布局。比如将元素B设置为排列到元素A的右方(RelativePanel.RightOf),将元素C设置为排列到元素B的下方。那么结合VisualStageManger中新的AdaptiveTrigger就可以根据屏幕尺寸来更改这些元素的布局依赖,比如在屏幕很窄时,将元素B设置为排列到元素A的下方(RelativePanel.BottomOf)。是不是很像CSS的MediaQuery?

x:Bind

现在除了{Binding}之外,还可以使用新的x:Bind来添加绑定。x:Bind和{Binding}的根本差别在于后者是是运行时绑定,前者是编译时绑定并且要求强类型。正因如此,x:Bind无需在运行时执行解析表达式、利用反射获取数据对象以及类型转换等等操作,从而带来更好的性能。

x:Phase

x:Phase是另外一个能够提升性能的新特性。它允许DataTemplate中的XAML元素按照设定的优先级顺序来渲染。x:Phase的值默认为0,值越小优先级越高。它提升性能的原理是防止渲染那些没必要去渲染的XAML元素。例如,假设列表的ItemTemplate包含一个Image和一个TextBlock,我们可以将Image的x:Phase设置为1,而TextBlock的x:Phase则不做更改。那么当用户快速滑动该列表时,飞闪而过的列表项中只有TextBlock会被渲染出来,因为它被设置为在Phase 0渲染;在渲染过程还没有到达Phase 1时,该列表项可能就已经离开了可视范围,所以Image就不会被渲染了。

Transform3D

真正的三维形变。

Live Visual Tree

Live Visual Tree是Visual Studio的一个新功能,用来在运行时检查和调整XAML,就像浏览器的F12一样。

 

Visual Layer和Composition API

Visual Layer位于XAML和DirectX之间,相较XAML更加底层一些,所有XAML元素都对应于一个Visual对象。而Composition API允许开发者对Visual Layer的渲染(形变、定位和动画)进行控制,控制粒度更细,性能也更好。

此外,微软还开源了一个叫做Win2D的项目,可以为Windows Runtime 8.1应用带来酷炫的二维图形渲染。

 

与Cortana集成

Corata不再满足于充当应用的“接线员”了,在新的语音命令API中,应用可以注册并实现一个专门的后台任务,用于接收、处理Cortana传来的语音指令,并向其返回结果。比如用户可以向Cortana询问某本书的评价,Cortana将该指令传递给某个豆瓣客户端(譬如豆芽)的后台任务,后台任务联机查询到该书的评级后,现场渲染一张星级图片并连同其它信息返回给Cortana,Cortana再将这些信息展现给用户。

此外,新的语音命令API还允许Cortana和后台任务协作完成一些简单的任务流程,后台任务可以向Cortana返回一组候选项,Cortana向用户展示这些候选项并引导用户选择其中一项,接着后台任务再根据用户的最终选择来进行处理。

整个交互过程中,用户都不需要离开Cortana或者打开应用,这些新特性使得应用真正地集成到了Cortana中。

 

Action Center Change Trigger

新的后台任务触发器,会在操作中心的通知项发生变化时触发,应用可以利用此触发器在后台任务中执行一些操作,比如重置磁贴上的未读数量标记。

 

多窗口

应用将可以拥有多个 Application View。也就是说,应用可以拥有多个窗口。如果是手机端,那么长按后退键进行任务切换时,就会看到同一个应用的多个视图。利用这个特性,应用就可以允许用户“同时”做多件事情并且互不干扰,比如一边撰写新邮件,一边查阅过往邮件等等。

 

投影API

新的投影API允许应用将一个单独的窗口投影到另一块屏幕上,而本地屏幕则用来对投影内容进行控制。比如一款安装在手机中的游戏,玩家可以将游戏画面投影到电视中,而手机屏幕则变身为该游戏的控制器。

 

.NET Native

所有应用在上传到商店后,会被编译为.NET Native,从而使最终安装到用户环境中的应用启动更快,占用内存更少。开发者可以禁用这一功能,也可以在开发环境中自行编译为.NET Native 来进行测试(编译时间略长)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注