引言

在本篇文章中,可以掌握以下知识:

  • 设备族群,如何决定目标设备
  • 新的UI控件和新面板帮助你适应不同的设备特征

从Windows 8系统开始,微软就 引入了WindowsRT(Windows Runtime),它是Windows App 模型的一个中间阶段。希望能够成为通用应用体系架构。

Windows Phone 8.1发布时,也兼容WRT 。这样有助开发者使用同一代码库创建通用的Windows8 app。

将近三年之后,微软的重头产品Windows 10终于横空出世。Windows 10 开始引入 UWP,更进一步的发展了Windows RunTime 模型,并将WRT 引入了Windows10 内核中。作为系统内核的一部分,UWP 现在提供创建通用的App平台(即App在运行Windows10的所有设备中都可以运行),当然微软内部也做出了改进,UWP 不仅包含了WinRT API,也增加了适应特定设备群的API。UWP 为开发跨设备App提供了可靠的API 层。这就意味着你只需要开发一次,就可在多种设备中运行。并发布到Windows
Store,所有的用户都可以下载试用。

无论设备的形式和输入模态的不同,UWP 都可以运行,也可以为特殊设备定制。自适应UI控件和新的布局Panel 有助于解决设备屏幕尺寸的多样性。

设备族群

Windows8.1 和Windows Phone 8.1 App 还存在操作系统的差异,无论是Windows和Windows Phone。有了Windows 10就不需要将所有的开发精力都集中在操作系统,但需要解决一个或多设备特征。设备族群可以识别API,系统特征,以及用户行为,也决定了可运行某一App的设备集。

设备族群是搜集的带有版本号和标识符的API集合,设备族群是OS的基础,PC 机运行桌面操作系统,是根据桌面设备族群决定的,智能手机和平板电脑等会运行Mobile OS,是由移动设备族群决定的,等等。

通用设备族群相对而言比较特殊,它不是任何OS 的基础,相反,通用设备族群的API是所有族群的父节点,正因为有了通用设备族群API才保证了每个OS 能够正常呈现到每种设备中。

每个子设备族群在通用族群基础上添加自有的API。使用设备族群的优点在于开发一次,到处运行,无论用户使用哪种设备,手机,平板或PC。App可使用自适应代码实现动态获取设备特征,适应设备。

你的App需要使用哪种设备族群,主要取决开发需求,并且决定影响最终App的呈现:

1. API 集,App运行时需要调用的API

2. API集调用

3. 适应的设备集,即App能够安装的设备类型。

选择设备族群主要由两方面原因决定,API 接口类型,是否创建App时能够无条件调用,以及App需要覆盖的设备范围。

如何做决策:

  • 最大化App 覆盖量
  • 为了实现App 覆盖设备的最大化,保证它能够在尽可能多的设备中运行,可把App目标定位通用设备族群。这样做的目的,App会就可以使用所有设备族群,(从通用设备族群派生的)
  • 限制App 适应某一种设备
  • 限制App适应某一类设备
  • 排除只支持某一特殊版本的设备族群

UI 和通用输入

UWP  App能够在具有不同特征的设备中运行。Windows10 提供新的通用控件,布局面板和工具,来帮助开发自适应UI 。例如根据不同的屏幕分辨率,相应的调节UI。

Windows 帮助你实现自适应UI:

1. 提供通用控件和布局面板来根据屏幕分辨率来优化UI

2. 常用输入处理,可解决输入模态多样性的问题,无论通过触摸输入,触摸笔,键盘,还是控制器,都能够统一处理。

3.提供UI 设计辅助工具,能够自适应不同的屏幕分辨率。

4. 自适应扩展可调节分辨率和DPI。

通用控制和布局板

Windows 10 提供了一些新控件,比如日历,拆分视图,在此之前,只有Winodws Phone 提供Pivot 控件 ,现在,通用设备族群也支持Pivot控件。而且控件也做了相应的调整,能够适应大尺寸屏幕。

使用自适应Panels实现自适应界面

Layout Panel 指定子元素的尺寸和位置的值主要取决于屏幕尺寸,比如StackPanel 会指定子节点顺序排放(垂直或水平)。Grid 与CSS 提供的Grid相似,每个界面元素都对应单元格。

新提供的RelativePanel 是一种布局样式,可以定义各界面元素之间的关系,当屏幕分辨率发生变化时,界面元素会做出相应的调整来适应。RelativePanel能够减少由于元素重新排列导致的一些性能问题。

如下,无论是横向和纵向的,蓝色按钮始终在Texbox1的右边,橙色按钮会放在蓝色按钮下方。

<RelativePanel>
<TextBox x:Name="textBox1" Text="textbox" Margin="5"/>
<Button x:Name="blueButton" Margin="5" Background="LightBlue" Content="ButtonRight" RelativePanel.RightOf="textBox1"/>
<Button x:Name="orangeButton" Margin="5" Background="Orange" Content="ButtonBelow" RelativePanel.RightOf="textBox1" RelativePanel.Below="blueButton"/>
</RelativePanel>

UWP开发入门系列笔记之(零):UWP的前世今生的更多相关文章

  1. UWP开发入门系列笔记之(一):UWP初览

    标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...

  2. UWP开发入门(四)——自定义CommandBar

    各位好,再次回到UWP开发入门系列,刚回归可能有些不适应,所以今天我们讲个简单的,自定义CommandBar,说通俗点就是自定义类似AppBarButton的东西,然后扔到CommandBar中使用. ...

  3. UWP开发入门(十六)——常见的内存泄漏的原因

    本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏>中提到过,即使有 ...

  4. UWP开发入门(十)——通过继承来扩展ListView

    本篇之所以起这样一个名字,是因为重点并非如何自定义控件,不涉及创建CustomControl和UserControl使用的Template和XAML概念.而是通过继承的方法来扩展一个现有的类,在继承的 ...

  5. UWP开发入门(25)——通过Radio控制Bluetooth, WiFi

    回顾写了许久的UWP开发入门,竟然没有讲过通过Windows.Devices.Radios.Radio来控制Bluetooth和WiFi等功能的开关.也许是因为相关的API设计的简单好用,以至于被我给 ...

  6. UWP开发入门(一)——SplitView

    接下来会写一个UWP(Universal Windows Platform)开发入门的系列,自己学习到哪里,有什么心得总结,就会写到哪里.本篇对适用于顶层导航的SplitView控件展开讨论. 首先S ...

  7. UWP开发入门(十一)——Attached Property的简单应用

    UWP中的Attached Property即附加属性,在实际开发中是很常见的,比如Grid.Row: <Grid Background="{ThemeResource Applica ...

  8. UWP开发入门(七)——下拉刷新

    本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之 ...

  9. UWP开发入门(二十三)——WebView

    本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的 ...

随机推荐

  1. 慕课网 微信小程序商城构建全栈应用 tp5【总结】

    1.异常处理: [代码越抽象,复用性越高] [封装性越好,适应代码变化的能力越强] [] <?php/** * Created by PhpStorm. * User: 14155 * Date ...

  2. Flash学习笔记(01)

    一:动画基础原理 二:Flash的动画的制作方式 三:元件与实例的关系 四:Flash实例     可以做出网上常见的网页动画   Flash能为我们做什么 1.网站.贺卡.配乐短片.短剧.游戏.教学 ...

  3. ubunt设置终端快捷键设置 及 常用快捷键

    Ctrl+A:将光标移动到命令行的开始处. Ctrl+E:将光标移动到命行令的结尾处. Ctrl+U:删除行首到光标出的字符. Ctrl+Z:把当前进程送到后台处理.  &    bg 部分快 ...

  4. maven+struts2环境搭建

    首先在struts2.xml文件配置一个包,在包中配置一个action,新建action,新建视图,在action中定义由method定义的方法,这个方法一定要返回String类型,返回的是视图的名称 ...

  5. jmesa应用

    一直以来,都没发现什么好的分页组件,最初时用过displaytag,仔细研究了一下,发现它并没有别人说的那么强大,至少离自己的期望还很远,因此尝试寻找其它新的分页组件,但很久以来都没发现自己满意的.无 ...

  6. 钓鱼(洛谷 P1717)

    题目描述 话说发源于小朋友精心设计的游戏被电脑组的童鞋们藐杀之后非常不爽,为了表示安慰和鼓励,VIP999决定请他吃一次“年年大丰收”,为了表示诚意,他还决定亲自去钓鱼,但是,因为还要准备2013NO ...

  7. msp430入门编程17

    msp430中C语言的寄存器操作 msp430入门学习 msp430入门编程

  8. python学习之-- shelve模块

    shelve模块定义:是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle(因为封装了pickle)可支持的python数据格式.功能:可以实现pickle的多次dump和多次 ...

  9. Fedora20 安装 MySQL

    参考资料: http://www.cnblogs.com/focusj/archive/2011/05/09/2057573.html http://linux.chinaunix.net/techd ...

  10. [bzoj4199][Noi2015]品酒大会_后缀自动机_后缀树_树形dp

    品酒大会 bzoj-4199 Noi-2015 题目大意:给定一个字符串,如果其两个子串的前$r$个字符相等,那么称这两个子串的开头两个位置$r$相似.如果两个位置勾兑在一起那么美味度为两个位置的乘积 ...