About Windows 10 SDK Preview Build 17110

来源:https://www.cnblogs.com/shaomeng/archive/2018/03/18/8546055.html
-Advertisement-
Play Games

在 Windows Developer Day 活動同時,微軟正式 Release 了 Windows 10 SDK Preview Build 17110。 Windows 10 SDK Preview Build 17110 在 UI 設計,游戲,應用開發,應用發佈和盈利等方向都有很多更新,下麵 ...


在 Windows Developer Day 活動同時,微軟正式 Release 了 Windows 10 SDK Preview Build 17110。

Windows 10 SDK Preview Build 17110 在 UI 設計,游戲,應用開發,應用發佈和盈利等方向都有很多更新,下麵我們在每個方向找出一些重點更新來詳細看一下。

UI 設計

Adaptive and interactive toast notifications

Micrsoft Doc: Toast content 

自適應和可交互的應用通知可以提升應用的使用體驗。本次 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 設計使用:

 

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

App capability declarations

File access permissions

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

Microsoft Doc: 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

Set and schedule app pricing

當開發者針對某個特性市場重新制定 App 的價格時,不再局限於標準的價格選擇,而是可以選擇自己輸入特定的價格數值。

 

目前的 17110 SDK 重點大致就是這些了,等 SDK 正式發佈後,我們會再針對新的變化進行進一步的瞭解。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.編程語言的分類 機器語言:二進位指令編程,直接操作硬體,運行效率高,開發效率低 彙編語言:用英文標簽代替二進位指令,也是直接操作硬體,運行效率高,開發效率低 高級語言:用人類的字元編寫程式,電腦無法理解,必須翻譯為電腦能夠理解的語言,才能執行,分為兩種 編譯型,解釋型 編譯型:如c語言,編譯 ...
  • fail fast 機制是Java集合(Collection)中的一種錯誤機制。當多個線程對同一個集合的內容進行操作時,就可能會產生fail fast(快速失敗)事件。例如:當某一個線程A通過iterator去遍歷某集合的過程中,若該集合的內容被其他線程所改變了;那麼線程A訪問集合時,就會拋出Con ...
  • 當在angularjs去顯示一個時間時,如原原本本去顯示這個值,它將顯示一個怪怪的字元串,其實它就是被系列化json之後的字元串。如:一個空值顯示為日期時間:如果非空值顯示為日期時間的情形: 為了能正常顯示,我得需要先將這json的字元串,進行返系列化,創建angularjs的過濾器filter: ...
  • GitHub Flavored Markdown 今天研究了一天Markdown移動端和pc端統一實現方式,由於以前有搞過移動端富文本編輯器,搞Markdown簡單多了; 其中GFM的表情語法不錯,比如笑臉:smile:,準備採用一下。 又想到了手機輸入法輸入表情瀏覽器頁面接收到的是一個字元,如果能 ...
  • 作為一個剛剛接觸C#和XAML的新手,首先就是要搞清楚這二者之間的關係。XAML的中文名稱為可擴展應用程式標記語言,而C#則是運行於.NET Framework之上的高級程式設計語言,可以理解為使用XAML製作UWP的用戶使用界面,而使用C#來完成內部的邏輯實現。 簡單類比QT應該就是.ui文件和. ...
  • 為 Debian 8 或 Debian 9(64 位)安裝 .NET Core,在 Debian 8 或 Debian 9(64 位)上安裝 .NET Core 的具體步驟 ...
  • 本文章主要說明asp.net core的創建和簡單使用。 一、使用到的命令 dotnet new :創建項目(解決方案,類庫,單元測試等),如:dotnet new web dotnet add package 添加一個nuget的引用 dotnet test:運行測試 dotnet build:編 ...
  • 本文以一個用戶控制項【User Control】實現溫度計的小例子,簡述用戶控制項的相關知識,以供學習分享使用,如有不足之處,還請指正。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...