UWP开发入门系列笔记之(一):UWP初览
标签:
随着微软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的前世今生
引言 在本篇文章中,可以掌握以下知识: 设备族群,如何决定目标设备 新的UI控件和新面板帮助你适应不同的设备特征 从Windows 8系统开始,微软就 引入了WindowsRT(Windows Run ...
- UWP开发入门(四)——自定义CommandBar
各位好,再次回到UWP开发入门系列,刚回归可能有些不适应,所以今天我们讲个简单的,自定义CommandBar,说通俗点就是自定义类似AppBarButton的东西,然后扔到CommandBar中使用. ...
- UWP开发入门(十六)——常见的内存泄漏的原因
本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏>中提到过,即使有 ...
- UWP开发入门(十)——通过继承来扩展ListView
本篇之所以起这样一个名字,是因为重点并非如何自定义控件,不涉及创建CustomControl和UserControl使用的Template和XAML概念.而是通过继承的方法来扩展一个现有的类,在继承的 ...
- UWP开发入门(25)——通过Radio控制Bluetooth, WiFi
回顾写了许久的UWP开发入门,竟然没有讲过通过Windows.Devices.Radios.Radio来控制Bluetooth和WiFi等功能的开关.也许是因为相关的API设计的简单好用,以至于被我给 ...
- UWP开发入门(一)——SplitView
接下来会写一个UWP(Universal Windows Platform)开发入门的系列,自己学习到哪里,有什么心得总结,就会写到哪里.本篇对适用于顶层导航的SplitView控件展开讨论. 首先S ...
- UWP开发入门(十一)——Attached Property的简单应用
UWP中的Attached Property即附加属性,在实际开发中是很常见的,比如Grid.Row: <Grid Background="{ThemeResource Applica ...
- UWP开发入门(七)——下拉刷新
本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之 ...
- UWP开发入门(二十三)——WebView
本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的 ...
随机推荐
- bootstrap ace treeview树表
html部分 <div class="widget-main padding-8" style="height:400px;overflow-y: scroll;& ...
- 对ASP.NET Cookie的一些新的认识
做用户登录,我一直用form验证的方式.有时候,为了节省时间,用户希望用户名输入框能够记住用户名,省得下次重新输入.这个时候光用form验证是不行的,因为form验证的话,用户一退出系统就失效了,所以 ...
- Eclipse+SVN搭建开发环境
目前我们开发环境为:windows service 2008 r2 x64 现在开始记录一下eclipse+SVN环境搭建过程: 1,)下载 VisualSVN-Server-3.4.2-x64:ht ...
- Adobe Flash CC 安装报错的解决办法
安装FlashCC的时候莫名的报错 ---------------------------Flash.exe - 应用程序错误---------------------------应用程序无法正常启动 ...
- Python学习总结19:类(一)
在Python中,可以通过class关键字定义自己的类,通过类私有方法“__init__”进行初始化.可以通过自定义的类对象类创建实例对象. class Student(object): count ...
- struts文件上传(单文件)
第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...
- jquery on 动态添加的元素,神奇的bug
$(document.body).on("click", ".comments-item .link-comment", function () { 平时用 d ...
- RMAN备份演练初级篇
前面我们已经知道了如何进入rman,以及rman的一些基本命令,相信大家定会觉着rman操作的简单,事实也确实如此,但万不要因此小视rman的强大,简单往往意味着灵活,灵活对于那些有心人则意味着主动权 ...
- delphi 读取excel 两种方法
http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...
- selenium webdriver设置超时
webdriver类中有三个和时间相关的方法: 1.pageLoadTimeout 2.setScriptTimeout 3.implicitlyWait pageLoadTimeout from s ...