标签:

随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说……于是顺其自然的,又开始了新一轮追随微软的脚步。

1. What

Universal Windows Platform(UWP)是什么呢?首先的说一说什么叫Device Family。

微软的产品布局主要有以下这么几个方面:传统的PC和新秀平板电脑2合1(苏菲婆),手机(特洛伊木马攻陷诺基亚现在脱胎换骨成Microsoft了)和平板设备,Xbox,物联网IoT设备(说实话这一点还是让我精神一振),Holographic(眼镜真是掉渣天了……)设备等,这每一类设备都可以被称为一个Device Family。那么微软号称的“一次开发,全平台发布”要怎么实现呢?首先,这些设备所使用的操作系统都是相同的Windows 10,这是应用可以通用的基础;其次,针对不同的Device Family,肯定是有不同的API的,那么相对的,一定也会有相同的API,事实上经过微软开发人员的努力,相同的API这部分比例还是很大的。那么好了,假设我只使用这部分API开发了一个APP,把这个APP发布到应用商店里(感谢微软现在应用商店也统一成为1个了),那么不同的设备下载下来运行应该都没有问题(因为共享API和相同的操作系统)。任务完成!

所谓的UWP,实际上就是在Windows Core之上,为各个设备家族所提供的一个统一的API接口,它是WinRT重新打包的超集,所以Win8.1/Windows Phone 8.1的APP可以很容易地迁移到Win10上,对于开发者来说,重新学习的成本也很低。

2. Why

这还用说吗……想想就激动吧

3. How

(1) 系统需求

开发UWP应用,需要Window10操作系统,参加了Windows Insider计划的开发者们可以将自己的开发用电脑升级到Win10预览版,这条路的坑很多……遇到问题了上网搜一搜前人们立的牌子。

下载Visual Studio 2015 RC版,这个版本是免费的,但是应对日常开发任务来说妥妥够了,还能开发Android和iOS应用呢……

下载Visual Studio Tools for Windows,获取Win10 API。

下载Emulator,获取Win10模拟器。如果不想用模拟器,可以用Windows Phone 8.1 Registration Tools解锁已经升级到Win10的手机,这种方法比较简单。

OK,可以开工!

(2) 怎么适应特定平台的特性

private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    // 在这里面模拟手机的后退按钮注册事件
    // 要使用 Device Specific APIs (Extension APIs) 需要以下几步
    // 1. 在引用中添加对应平台的引用,如“Microsoft Mobile Extension SDK for Universal App Platform”
    // 2. 检测命名空间是否存在
    var ns = "Windows.Phone.UI.Input.HardwareButtons";
    if(Windows.Foundation.Metadata.ApiInformation.IsTypePresent(ns))
    {
        // 3. 写需要的特定设备平台代码
        Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
    }
}

private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    tb_ReactToBtn.Text = "Reacted to Button Press!!";
}

4. 总结

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

UWP开发入门系列笔记之(一):UWP初览的更多相关文章

  1. UWP开发入门系列笔记之(零):UWP的前世今生

    引言 在本篇文章中,可以掌握以下知识: 设备族群,如何决定目标设备 新的UI控件和新面板帮助你适应不同的设备特征 从Windows 8系统开始,微软就 引入了WindowsRT(Windows Run ...

  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. pptp建立vpn

    1. 安装依赖 ppp yum -y install ppp 2. 编译安装pptpd wget http://jaist.dl.sourceforge.net/project/poptop/pptp ...

  2. C++Primer 第十五章

    //1.面向对象程序设计的核心思想是数据抽象,继承,动态绑定. // 通过使用数据抽象,我们可以将类的接口和实现分离 // 使用继承,可以定义相似的类型并对其相似关系建模 // 使用动态绑定,可以在一 ...

  3. Leetcode: Palindrome Numbers

    Determine whether an integer is a palindrome. Do this without extra space. 尝试用两头分别比较的方法,结果发现无法解决1000 ...

  4. 树链剖分(单点更新,求区间最值,区间求和Bzoj1036)

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 5759  Solved: 2383 [Submi ...

  5. 最大权闭合图hdu3996

    定义:最大权闭合图:是有向图的一个点集,且该点集的所有出边都指向该集合.即闭合图内任意点的集合也在改闭合图内,给每个点分配一个点权值Pu,最大权闭合图就是使闭合图的点权之和最大. 最小割建边方式:源点 ...

  6. hduoj 4706 Children&#39;s Day 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...

  7. [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Extjs4.x完美treepanel checkbox无限级选中与取消

    注:当node选中, childNodes逐级全部选中. parentNode当子node全部选中时逐级自动选中,nodes未全部选中, parentNode逐级自动取消选中 在javascript中 ...

  9. 使用Eclipse构建Maven项目 (转)

    Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...

  10. HDU 4816 Bathysphere(数学)(2013 Asia Regional Changchun)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 Problem Description The Bathysphere is a spheric ...