About Windows 10 SDK Preview Build 17110
在 Windows Developer Day 活动同时,微软正式 Release 了 Windows 10 SDK Preview Build 17110。
Windows 10 SDK Preview Build 17110 在 UI 设计,游戏,应用开发,应用发布和盈利等方向都有很多更新,下面我们在每个方向找出一些重点更新来详细看一下。
UI 设计
Adaptive and interactive toast notifications
自适应和可交互的应用通知可以提升应用的使用体验。本次 SDK 更新在通知方面的提升主要是通知中图片限制的调整,通知中的进度条和输入选项的增加。
1. 图片尺寸限制
图片来源包括:http://,ms-appx:///,ms-appdata:///
对于网络图片,图片尺寸限制的单位是单个图片尺寸。16299 以后,normal connections 的限制是 3MB,metered connections 的限制是 1MB;而之前的限制统一是 200 KB。可以看到对网络图片的尺寸限制放宽了很多,很多高清晰度的图片也可以被使用。
如果你的图片超过了这个尺寸限制,或者下载过程中失败,超时,通知会正常被显示,不过图片部分会被放弃。
2. 进度条
Toast progress bar and data binding
在某些场景,例如下载或其他过程进行时,需要在通知中显示进度条,让用户可以保持对进度的关注。进度条可以是不确定的或者确定的,
Design samples
Design toolkits and samples for UWP apps
Fluent Design 的演示 Sample - BuildCast 已经加入到 Design toolkits and samples 页面。展示了 Fluent Design 系统和 UWP 其他的功能。
BuildCast sample 也在 GitHub 开源:https://github.com/Microsoft/BuildCast
另外下列的工具箱都提供了控件和模板供 UWP 设计使用:
- Adobe XD toolkit (v1803, March 2018)
- Adobe Illustrator toolkit (v1803, March 2018)
- Sketch toolkit (v1803, March 2018)
- Adobe Photoshop toolkit (v1705, May 2017)
- Framer toolkit (on GitHub) (v1710, August 2017)
Embedded handwriting
文本控件加入了触控笔的支持,目前在 Windows 预览版系统中支持,用户可以使用触控笔直接在 TextBox,RichTextBox 和 AutoSuggestBox 控件中使用 Windows Ink 进行书写。在用户书写后,根据手写笔记转换成对应的文字,并保留手写的痕迹。
大家可以在 Microsoft Store 下载 XAML Controls Gallery 应用来查看 TextBox 手写的 Demo,或者在 GitHub 下载 Windows-universal-samples来查看控件的使用 Sample。
来看看内置手写的官方演示:
用户可以在文本控件中任何位置进行书写,在候选窗口中识别出手写的结果并给用户推荐使用。用户可以选择一个结果,或在接受结果后继续书写。识别结果是逐个字母来识别的,所以识别结果不限于字典中的单词。在用户书写后,根据手写笔记转换成对应的文字,并保留手写的痕迹。
用户可以使用标准手势和操作来编辑文字:
- 穿过或划掉 -- 穿过的动作去删除一个词或词的一部分
- 连接 -- 在词之间画一个弧形来删除词之间的空格
- 插入 -- 画一个插入符号可以插入一个空格
- 重写 -- 在现有文字上书写可以替换它
应用目标版本为 1803 或更新时才可以使用嵌入手写输入。把 IsHandwritingViewEnabled 属性设置为 false 可以禁用这个功能。
嵌入手写输入对于触屏设备会非常的方便易用,也会避免虚拟键盘操作的不方便。让触控笔的操作更加真实化,提高书写效率和体验。
Navigation view
Microsoft Doc: Navigation view
Navigation View 控件提供了一个可收起的导航菜单作为 App 里的顶级导航,它实现自 nav pane 或 hamburger menu,可以针对不同的窗体尺寸自适应 pane 的显示模式。
微软推荐在以下场景使用 Navigation View:
- 存在同一类型多个顶级导航元素,例如一个体育类 App 中包含不同的体育项目
- 5-10 个顶级导航分类的场景
- 提供一个易用的导航体验,容器中仅包含导航元素,不包含任何操作
- 在小窗口时保留屏幕真实的观感
如果想了解更多关于导航的模式和基础概念,可以看这里:Navigation design basics for UWP apps
NavigationView 控件有很多的内置行为实现自简单的 nav pane 模式。如果大家想要更多复杂的行为而 NavigationView 不支持,可以尝试 Master/Detail 模式。
大家可以在 Microsoft Store 下载 XAML Controls Gallery 应用来查看 NavigationView 的 Demo,或者在 GitHub 下载 Windows-universal-samples 来查看控件的使用 Sample。
来看看 NavigationView 的 Demo:
<NavigationView Loaded="NavigationView_Loaded" Margin="0,12,0,0" Grid.Row="1" SelectionChanged="NavigationView_SelectionChanged"
x:Name="nvSample"
IsSettingsVisible="{Binding ElementName=settingsCheck,Path=IsChecked}" IsTabStop="False"
RS4Api:PaneTitle="{Binding ElementName=paneText,Path=Text}"
RS4Api:IsBackButtonVisible="{Binding ElementName=visibleCheck,Converter={StaticResource BooleanNegationToBackVisibilityConverter},Path=IsChecked}"
RS4Api:IsBackEnabled="{Binding ElementName=enableCheck,Path=IsChecked}
Header="This is header text.">
<NavigationView.MenuItems>
<NavigationViewItem Icon="Play" Content="Menu Item1" Tag="SamplePage1" />
<NavigationViewItemSeparator/>
<NavigationViewItem Icon="Save" Content="Menu Item2" Tag="SamplePage2" />
<NavigationViewItem Icon="Refresh" Content="Menu Item3" Tag="SamplePage3" />
</NavigationView.MenuItems>
<Frame x:Name="contentFrame">
</Frame>
</NavigationView>
游戏
Getting started for game development
https://docs.microsoft.com/en-us/windows/uwp/gaming/getting-started
如果大家对 Windows 或 Xbox 的游戏开发有兴趣,可以看一下这里的入门指引:
1. 获取软件和工具,包括 Windows 10 系统,Visual Studio 等
2. 准备好开发的硬件,在硬件设备上打开开发者模式
3. 运行一个 Demo 检查工作结果
4. 加入一个开发者计划
5. 注册一个开发者账号,让你可以把游戏发布到应用商店
Graphics adapters
新增了几个 DXGI API,影响图形适配偏好和移除
- IDXGIFactory6 接口提供一个方法,可以枚举出基于 GPU 偏好的图形适配器列表
- DXGIDeclareAdapterRemovalSupport 方法声明了适配器移除的支持
- DXGI_GPU_PREFERENCE 描述了用于 App 运行的 GPU 偏好
应用开发
Adaptive Cards
一种可以让开发者以更通用和统一的方式来对卡片对展示和交互的方式。
详情见 Windows Developer Day - Adaptive Cards
App Resource Group
AppResourceGroupInfo 提供了新的方法,让用户可以发起过渡状态,让 App 进入暂停,激活和终止状态。
对应的方法名分别:
- StartResumeAsync() -- 发起状态变化,让 App 变为激活状态;
- StartSuspendAsync() -- 发起状态变化,让 App 变为暂停状态;
- StartTerminateAsync() -- 发起状态变化,让 App 变为终止状态;
Broad file-system access
broadFileSystemAccess 能力允许应用访问文件系统,在不使用 filepicker 的前提下。需要在 Manifest 的 capability 中进行设置。
Console UWP apps
Create a Universal Windows Platform console app
开发者可以使用 C++ /WinRT 或 CX /UWP 来创建 Console App,像 DOS 或 PowerShell 一样运行在控制台。Console App 的输入和输出都来自控制台。UWP 的 Console App 可以发布到 Microsoft Store,在 app list 中有一个主入口,一个主磁贴可以被固定到开始菜单。
开发 UWP Console App 之前,需要下载 Console App (Universal) Project Templates, 地址:Visual Studio Marketplace
下载模板后,就可以使用 C++ /WinRT 或 CX /UWP 来创建 UWP Console App 了,开发过程和普通的 Console App 很类似。
UWP Console App 可以访问应用所在目录和所有子目录,因为它的模板中在 manifest 中添加了 AppExecutionAlias 的扩展,这种扩展让用户可以在控制台中输入缩写来启动应用,应用不需要在系统的应用启动目录中。
同时开发者可以添加更广的文件系统访问权限,只需要通过 broadFileSystemAccess 的能力设置,详情见上面的介绍。
同时 UWP Console App 也支持多实例运行,因为它的模板中在 manifest 中添加了 SupportsMultipleInstances 能力。
模板同时添加了 SubSystem="console" 能力,标志了当前 App 是一个 Console App,它支持传统 Windows 和 IoT 项目。
官方提出的几个 UWP Console App 的注意事项:
- 只能使用 C++ /WinRT 或 CX /UWP 来开发
- 目标必须是 桌面或 IoT 项目类型
- 应用中不能创建窗体,所以 MessageBox 这样的窗体不能使用
- 不支持后台任务
- 不支持激活协议,如文件和协议等
- 支持多实例,但不支持多实例重定向
- Win32 API 可用列表:Win32 and COM APIs for UWP apps
Machine Learning
千呼万唤始出来的 Windows AI Platform 和 Windows Machine Learning。
详情见 Windows Developer Day - Windows AI Platform
Multi-instance UWP apps
Create a multi-instance Universal Windows App
UWP App 可以通过配置来支持多实例,如果一个实例正在运行,一个运行的请求发过来,平台不会激活目前存在的实例,而是会创建一个新的实例,运行在一个单独的进程中,这个特性在 1803 版本开始被支持。
同样的,多实例特性需要在 Visual Studio 中安装新的项目模板:Multi-Instance App Project Templates.VSIX, 安装后,使用 C# 和 C++ 都可以创建项目。
两个模板会被安装:
- Multi-Instance UWP app -- 创建一个多实例的 App
- Multi-Instance Redirection UWP app -- 提供一个附加的逻辑,让用户可以选择启动新实例,或者选择目前激活的实例。可以想象一下 Office 打开或编辑文件时的场景。
这两个模板都会在 manifest 文件中添加 SupportsMultipleInstances,其中 desktop4 和 iot2 前缀标志了项目只支持传统桌面 Windows 和 IoT 系统。manifest 配置如下:
<Package
...
xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
xmlns:iot2="http://schemas.microsoft.com/appx/manifest/iot/windows10/2"
IgnorableNamespaces="uap mp desktop4 iot2">
...
<Applications>
<Application Id="App"
...
desktop4:SupportsMultipleInstances="true"
iot2:SupportsMultipleInstances="true">
...
</Application>
</Applications>
...
</Package>
而 Multi-Instance Redirection UWP app 中对于当前实例的选择,在应用 OnLaunched() 和 OnActivated() 方法执行前的 Main() 方法中进行。这样就可以在任何其他代码执行前,决定哪个实例被激活。
public static class Program
{
static void Main(string[] args)
{
// First, we'll get our activation event args, which are typically richer
// than the incoming command-line args. We can use these in our app-defined
// logic for generating the key for this instance.
IActivatedEventArgs activatedArgs = AppInstance.GetActivatedEventArgs(); // In some scenarios, the platform might indicate a recommended instance.
// If so, we can redirect this activation to that instance instead, if we wish.
if (AppInstance.RecommendedInstance != null)
{
AppInstance.RecommendedInstance.RedirectActivationTo();
}
else
{
// Define a key for this instance, based on some app-specific logic.
// If the key is always unique, then the app will never redirect.
// If the key is always non-unique, then the app will always redirect
string key = Guid.NewGuid().ToString(); // always unique.
//string key = "Some-App-Defined-Key"; // never unique.
var instance = AppInstance.FindOrRegisterInstanceForKey(key);
if (instance.IsCurrentInstance)
{
// If we successfully registered this instance, we can now just
// go ahead and do normal XAML initialization.
global::Windows.UI.Xaml.Application.Start((p) => new App());
}
else
{
// Some other instance has registered for this key, so we'll
// redirect this activation to that instance instead.
instance.RedirectActivationTo();
}
}
}
}
Screen capture
在 Windows 10 1803 版本后,SDK 提供 API 可以获取当前显示或应用窗口的图形帧,创建视频流或截屏。有了这个功能,开发者可以调用系统 UI 选择截图的范围,同时被截图的区域会有一个黄色的边框提示。具体实现方式,可以参考上面链接中的示例代码。
Windows Mixed Reality
为支持高速发展的 Windows MR 平台,新的 API 被添加到 Windows.Graphic.Holographic 和 Windows.UI.Input.Spatial 命名空间。
Windows MR 是一个很有前景的平台,有兴趣的开发者可以在 Windows Mixed Reality 获取更多信息。
应用发布和盈利
Enter free-form prices in a specific market's local currency
当开发者针对某个特性市场重新制定 App 的价格时,不再局限于标准的价格选择,而是可以选择自己输入特定的价格数值。
目前的 17110 SDK 重点大致就是这些了,等 SDK 正式发布后,我们会再针对新的变化进行进一步的了解。
About Windows 10 SDK Preview Build 17110的更多相关文章
- TroubleShoot: Enable Developer Mode in Windows 10 Insider Preview Build 10074
There is a known issue in Windows 10 Insider Preview build 10074 (see here). Developers cannot enabl ...
- New Windows 10 SDK - Toast Notification
概述 Toast Notification 在 UWP App 中有很重要的作用,能够很大程度上增强 App 和用户之间的沟通,比如运营推广活动.版本更新.提醒类任务提示等等.Toast Notifi ...
- New Windows 10 SDK - Multi-instance UWP apps
概述 前面一篇 About Windows 10 SDK Preview Build 17110 中,我们简单介绍了 Multi-instance UWP Apps,今天结合开发过程详细讲解一下. 在 ...
- Windows 10 SDK 10.0.10158
昨天微软发布了Windows 10 SDK 10158版本: http://blogs.windows.com/buildingapps/2015/06/30/windows-10-sdk-previ ...
- 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失
原文 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失 Microsoft发布了新版本的Windows 10 UWP SDK Build 17 ...
- Windows 10 SDK 10.0.10069 : The installer failed. User cancelled installation. Error code: -2147023294
注* 请先跳到文章后面的配置“操作系统的区域设置”部分,然后尝试重试安装VS,如果仍然失败,请看下面内容. 安装UAP SDK失败 Visual Studio 2015 RC Community 安装 ...
- Windows 10 Technical Preview 屏幕亮度
下载了 Windows 10 Technical Preview 安装好之后都挺正常的,就是显卡驱动没有, 联上网络, 自动找到驱动,看起来一切都挺好的. 但是重启之后,屏幕就变得特别暗了, 亮 ...
- 被 Windows 10 SDK 坑了
抓包抓到的配置文件与完整版的VS一致,虽然显示出来的只有 Windows 10 通用工具,我还以为是只更新这些(因为列出来的几个,我确实之前没装),就愉快地点了安装,结果……新建项目时,发现 Wind ...
- Windows 10 Technical Preview 10041 使用 IIS Express 运行网站应用程序异常
在 Windows 10 中使用 Visual Studio 2013 Ultimate with Update 4 开发网站,9926 的时候还好好的,升到 10041 就不能调试了: “Syste ...
随机推荐
- 想想我们能拿HoloLens 做点什么
作为一个微软员工,顿时感觉好了很多. 中午吃饭同事们热烈讨论这东东: 1. 看电视 2. 办公 3. 用HoloLens 玩3d 游戏.满公园跑. 4. 看书 5. 开车的时候,实时显示地图 6. 一 ...
- Linux系统上安装JDK1.8
1,下载jdk1.8 首先进入jdk下载目录:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...
- linux中权限对文件和目录的作用
chmod 755 a.txt 文件: r:读取文件内容(cat more head tail) w:编辑,新增,修改文件的内容(vi,echo) 不包括删除文件:原因是只能对文件内容进行修改,而在l ...
- EmguCV中图像类型进行转换
1. Bitmap:类型不在 Emgucv命名空间中 2. Image<TColor, TDepth> 3. Mat: 4. UMat: 高 ...
- mysql忘记密码解决的办法
[很管用]忘记mysql root密码解决办法 1.编辑MySQL配置文件: 首先停止mysql服务, 然后开始编辑mysql配置文件:vi /etc/my.cnf在[mysqld]配置段添加如下一行 ...
- session 与 coolie 的区别与联系
cookie 和session 的区别: session 在服务器端,cookie 在客户端(浏览器) cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当 ...
- Nodejs的运行原理-libuv篇
前言 这应该是Nodejs的运行原理的第7篇分享,这篇过后,短时间内不会再分享Nodejs的运行原理,会停更一段时间,PS:不是不更,而是会开挖新的坑,最近有在研究RPG Maker MV,区块链,云 ...
- sizeof计算空间大小的总结
sizeof,看起来还真不简单,总结起来还是一大堆的东西,不过这是笔试面试中出现比较频繁的,我也是考过才觉得很重要,有些规则如果不注意,还真是拿到一道题目摸不着头脑,所有总结一下,方面忘记的时候瞄一瞄 ...
- 笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记源于CDA-DSC课程,由常国珍老师主讲 ...
- Anaroid WebView API详解
android提供了webView控件专门用来浏览网页 使用WebView时,在程序中装载WebView控件,可以把WebView写到布局中,也可以动态New出WebView实例,可以设置属性,比如: ...