随着Surface Studio的发布,微软发布了与之相配套的外设硬件Surface Dial,用户可以将Surface Dail吸附在Surface Studio的屏幕上面,用旋转和点击的实体操作来操作应用程序。

目前Surface Dial 可以支持的终端硬件有三款:

  • Surface Studio
  • Surface Book
  • Surface Pro 4

有上述之一硬件的小伙伴们可以尝试一下这款新鲜的产品。

下面,我用一款简单的UWP程序来介绍如何给Surface Dial这款外设开发自定义的交互逻辑。

前期准备:

  • 请确保您的计算机操作系统是最新的Win10 Anniversary Update版本
  • 请确保您的Visual Studio是VS2015 update3 版本
  • Surface Dial设备(可选)
  • Surface Studio, Surface Book 以及 Surface Pro 4 都是可选项,如果没有,并不影响案例代码的运行

运行例子:

如果您有surface dial设备,并且拥有Surface Studio, Surface Book或者Surface Pro4其中的任一一款终端,请在Visual Studio里面运行我们的案例代码,并且将Surface Dail吸附在屏幕上。您将会看到下面这个界面。

此时,您可以选择Surface Dial,界面中的滑动条会跟着您的转动而变化,点击Surface Dial的按钮,界面中的开关控件会打开或者关闭。

使用代码:

您可以使用代码去自定义Surface Dail在您的应用程序里的旋转和点击操作。

控制Surface Dail的核心类是RadialController ,可以在Windows.UI.Input这个名字空间下找到该类。您可以调用RadialController.CreateForCurrentView() 来获取该类的实体。

RadialController类实体对外公布了几个事件,在这个例子里我们只关注ButtonClicked 事件和 RotationChanged事件。前者会在Surface Dail被点击的时候调用,而后者则是响应旋转操作。

下面是例子里的核心代码片段:

    public sealed partial class MainPage : Page
{
RadialController rdController = null;
public MainPage()
{
this.InitializeComponent(); // get controller
rdController = RadialController.CreateForCurrentView(); // process click event
rdController.ButtonClicked += RdController_ButtonClicked; // process rotate event
rdController.RotationChanged += RdController_RotationChanged;
} private void RdController_RotationChanged(RadialController sender, RadialControllerRotationChangedEventArgs args)
{
// change the slider according to the delta degree from rotating
var deltaRatio = args.RotationDeltaInDegrees / 360.0f;
this.slider.Value += this.slider.Maximum * deltaRatio;
} private void RdController_ButtonClicked(RadialController sender, RadialControllerButtonClickedEventArgs args)
{
// switch the toggle to opposite status
this.btnToggle.IsOn = !this.btnToggle.IsOn;
}
}

最后,您可以通过访问 How to implement custom interactions for Surface Dial 来下载完整的代码案例。

如何为Surface Dial设备开发自定义交互功能的更多相关文章

  1. Surface Dial 与 Windows Wheel UWP应用开发

    随着微软发布 Surface Studio 在演示视频中非常抢眼的一个配件就是 Surface Dial,Dial 是Windows输入设备大家庭中的新成员我们把它归类为Windows Wheel 类 ...

  2. UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial

    本篇作为技术分享系列的第四篇,详细讲一下手绘视频中 Surface Pen 和 Surface Dial 的使用场景. 先放一张微软官方商城的图,Surface 的使用中结合了 Surface Pen ...

  3. 为HTML表格添加交互功能------DataTables

    DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互功能,虽然简单性是整个项目的核心设计原则,但入门看起来相当艰巨.但是,采取这些第一步并在您的网站上运行DataTa ...

  4. C# 编写 Windows 动态桌面软件实现(一)之桌面交互功能

    DreamScene2 1.3 版本已经发布了,现在支持鼠标和桌面交互功能.这个功能不会影响性能,基本不占用 CPU.这个功能让我对 Windows 消息机制有了更深入的理解,在这篇博客中我会详细介绍 ...

  5. Linux Shell 自动交互功能

    需求背景:   近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大 ...

  6. iOS开发之功能模块--高仿Boss直聘的IM界面交互功能

    本人公司项目属于社交类,高仿Boss直聘早期的版本,现在Boss直聘界面风格,交互风格都不如Boss直聘以前版本的好看. 本人通过iPhone模拟器和本人真机对聊,将完成的交互功能通过Mac截屏模拟器 ...

  7. 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能

    原文:利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能1.在界面上添加几个checkbox和一 ...

  8. Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能

    都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是 ...

  9. PHP中使用 $_GET 与$_POST 实现简单的前后台数据传输交互功能

    在之前的学习过程中我们接触过前后台数据请求交互的方法有表单提交.AJAX请求以及Angularjs中的$http,今天我们尝试在PHP中使用 $_GET 与$_POST 实现简单的前后台数据传输交互功 ...

随机推荐

  1. ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定

    原文:Model Binding 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:许登洋(Seay).何镇汐 模型绑定介绍 ASP.NET Core MVC 中的模型绑定从 HTTP ...

  2. H5天气查询demo(二)

    最近刚好有空,学长帮忙让做个毕设,于是我提到了那个基于H5地理位置实现天气查询的方法,学长听了也觉得不错,于是就这个主题,扩展了一下,做了一个航班管理查询系统,为上次博客中提到的利用H5 api中的经 ...

  3. PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

    最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...

  4. LINQ to SQL语句(10)之Insert

    1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库. var newCustomer = new Custo ...

  5. 设计模式(六)原型模式(Prototype Pattern)

    一.引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在 ...

  6. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

  7. PHP基础知识第二趴

    下期预告,函数...

  8. ArcEngine数据删除几种方法和性能比较[转]

    四个解决方案: 1.IFeatureCursor 游标查询后,遍历删除 2.更新游标删除IFeatureCursor.DeleteFeature() 3.ITable.DeleteSearchedRo ...

  9. 【原】HTTP in iOS你看我就够

    声明:本文是本人 编程小翁 原创,转载请注明. 本文同步发布在简书中,强烈建议移步简书查看,编程小翁 HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解 ...

  10. SE Springer小组之《Spring音乐播放器》可行性研究报告三、四

    3 对现有系统的分析 由于本次可行性分析主要是建立在团队自行实现一个音乐软件的目标上,并不是在一个现有系统的基础上开发改进的新系统.因此这里将分析一款市面上已经存在的音乐软件(以下称为W音乐),并为之 ...