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. 总结

时间: 2024-11-28 23:14:46

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

UWP开发入门(十六)——常见的内存泄漏的原因

本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏>中提到过,即使有垃圾回收机制,写C#还是有可能发生内存泄漏. 一般来说,以下两种情况会导致内存泄漏: 对象用完了但是没有释放资源 对象本身是做了清理内存的操作,但是对象内部的子对象没有成功释放资源 下面就UWP开发中具体的实例来说明需要避免的写法 从static/global的对象上注册了事件 FakeService.Ins

Android开发入门系列

<1>第一章:java简介- 掌握Java语言基础知识- 理解面向对象的编程思想- 运用Java编写简单的程序- 运用JDBC编写数据库访问程序 本章链接:http://pan.baidu.com/s/1i39OUO1 <2>第二章:Java语言基础      - 理解数据类型       - 掌握运算符       - 掌握数组       - 运用控制流语句 本章链接:(上)http://pan.baidu.com/s/1o6qHOQu(下)http://pan.baidu.c

UWP开发入门(一)——SplitView

接下来会写一个UWP(Universal Windows Platform)开发入门的系列,自己学习到哪里,有什么心得总结,就会写到哪里.本篇对适用于顶层导航的SplitView控件展开讨论. 首先SplitView是Win10 UWP新增的控件,以前虽然可以通过DockPanel模拟出类似的效果,但又哪里及得上M$原生支持的SplitView快捷方便呢. 至于为什么说SplitView适合顶层导航,可以参考目前尚为数不多的UWP APP,比如微博.QQ和网易等Win10 APP,基本都是通过S

UWP开发入门(七)——下拉刷新

本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之前我也没有进行过下拉刷新的研究.于是先去google了几篇blog学习了一下,然后再看了某软官方的Sample.(同学们啊官方有下拉刷新的Sample啊!就在Git上啊!不要钱无门槛啊!)学习之后发现实现的方式大体分为两类. 一类是以某软Sample和博客园MS-UAP封装的PullToRefres

UWP开发入门(十一)——Attached Property的简单应用

UWP中的Attached Property即附加属性,在实际开发中是很常见的,比如Grid.Row: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition>

UWP开发入门(二十一)——保持Ui线程处于响应状态

GUI的程序有时候会因为等待一个耗时操作完成,导致界面卡死.本篇我们就UWP开发中可能遇到的情况,来讨论如何优化处理. 假设当前存在点击按钮跳转页面的操作,通过按钮打开的新页面,在初始化过程中存在一些耗时的操作. public void OnNavigatedTo(object obj) { var watch = new Stopwatch(); Debug.WriteLine("---------------Start"); watch.Start(); //假设耗时1秒 DoBu

UWP开发入门(二十三)——WebView

本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的应用并不一定是差的应用,很多网页采用了响应式设计,假设网页不存在复杂的交互,提取网页的正文部分嵌入WebView,可以说方便快捷省时省力.比如亚马逊.驴妈妈这些UWP APP都还挺不错的,京东那个网页就套的比较差了…… WebView最为简单的用法如下: <WebView Source="ht

Web开发入门学习笔记

公司web项目终于要启动了,本以为django学习可以在实战中进行,结果最终使用了Drupal框架,好吧,那我们就PHP走起,买了本<细说PHP>,先跟着过一遍Web开发入门. HTTP协议 HTTP协议:所有的WWW文件都必须遵守HTTP协议,HTTP是客户端浏览器或者其他程序与Web服务器之间的应用层通信协议.HTTP协议建立在TCP/IP协议,也就是说,是一种可靠的传输协议,意味着两台设备在传输之前必须先建立可靠连接(握手),由客户端发起到服务器端的指定端口(默认为80)HTTP请求,并

UWP开发入门(十七)——判断设备类型及响应VirtualKey

蜀黍我做的工作跟IM软件有关,UWP同时会跑在电脑和手机上.电脑和手机的使用习惯不尽一致,通常我倾向于根据窗口尺寸来进行布局的变化,但是特定的操作习惯是依赖于设备类型,而不是屏幕尺寸的,比如聊天窗口的发送消息.假设如下场景,desktop运行时要求回车键直接发送消息,而mobile版则要求回车键换行,仅能通过点击按钮发送消息. 第一段的铺垫是为了今天提到的两个主题,判断设备类型和处理Shift+Enter的组合. 首先判断设备类型我们使用的是Windows.System.Profile命名空间下