标签:

随着微软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. bootstrap ace treeview树表

    html部分 <div class="widget-main padding-8" style="height:400px;overflow-y: scroll;& ...

  2. 对ASP.NET Cookie的一些新的认识

    做用户登录,我一直用form验证的方式.有时候,为了节省时间,用户希望用户名输入框能够记住用户名,省得下次重新输入.这个时候光用form验证是不行的,因为form验证的话,用户一退出系统就失效了,所以 ...

  3. Eclipse+SVN搭建开发环境

    目前我们开发环境为:windows service 2008 r2 x64 现在开始记录一下eclipse+SVN环境搭建过程: 1,)下载 VisualSVN-Server-3.4.2-x64:ht ...

  4. Adobe Flash CC 安装报错的解决办法

    安装FlashCC的时候莫名的报错 ---------------------------Flash.exe - 应用程序错误---------------------------应用程序无法正常启动 ...

  5. Python学习总结19:类(一)

    在Python中,可以通过class关键字定义自己的类,通过类私有方法“__init__”进行初始化.可以通过自定义的类对象类创建实例对象. class Student(object): count ...

  6. struts文件上传(单文件)

    第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  7. jquery on 动态添加的元素,神奇的bug

    $(document.body).on("click", ".comments-item .link-comment", function () { 平时用 d ...

  8. RMAN备份演练初级篇

    前面我们已经知道了如何进入rman,以及rman的一些基本命令,相信大家定会觉着rman操作的简单,事实也确实如此,但万不要因此小视rman的强大,简单往往意味着灵活,灵活对于那些有心人则意味着主动权 ...

  9. delphi 读取excel 两种方法

    http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...

  10. selenium webdriver设置超时

    webdriver类中有三个和时间相关的方法: 1.pageLoadTimeout 2.setScriptTimeout 3.implicitlyWait pageLoadTimeout from s ...