如何为Surface Dial设备开发自定义交互功能

随着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 来下载完整的代码案例。

时间: 2024-08-05 19:03:47

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

第四十一课、编辑交互功能的实现

一.编辑交互功能 1.编辑器中常规的编辑交互功能 2.QPlainTextEdit提供了丰富的交互接口 3.信号与槽的连接 编辑器代码修改:将action触发的信号映射到QPlainTextEdit对象的槽函数   二.文本编辑器中的界面状态 1.不是任何时候都可以复制.粘贴.撤销.重做(比如开始没有数据时) 2.QPlainTextEdit能够发送与界面状态相关的信号 3.实现步骤 (1).连接界面状态信号到自定义的槽函数 (2).通过文本信息找到对应的QAction对象 QAction* M

第41课 编辑交互功能的实现

1. 常规编辑交互功能 (1)复制(Copy).粘贴(Paste).剪切(Cut).撤销(Undo).重做(Redo).删除(Delete) (2)QPlainTextEdit提供了丰富的交互功能接口 2. 信号与槽的连接 [编程实验]基本编辑功能实现 3. 文本编辑器中的界面状态 (1)不是任何时候都能够进行复制.粘贴.撤销或重做.(即部分按钮得灰化处理) (2)QPlainTextEdit能够发送与界面状态相关的信号 ①void copyAvailable(bool yes); ②void

OpenLayers 之 地图交互功能(interaction)详解

地图交互功能和上一篇讲的地图控件有些混淆,它们都控制着用户与地图的交互,区别是地图控件的触发都是一些可见的 HTML 元素触发,如按钮.链接等:而交互功能都是一些设备行为触发,都是不可见的,如鼠标双击.滚轮滑动等,手机设备的手指缩放等. 地图的交互功能包含很多,如地图双击放大,鼠标滚轮缩放,矢量要素点选,地图上绘制图形等等.只要是涉及到与地图的交互,就会涉及到 intercation 类,它定义了用户与地图进行交互的基本要素和事件.下面我们就来看看用户与地图都有那些交互,怎么交互. 注: '自定

KM盒子V6.2自定义模版功能教程

KM盒子从V6.2版开始将原来的自定义首页功能升级为自定义模版功能,增加{img}文档缩图.{lit}标题.{liurl}链接.{descr}描述等模版标签的调用. 1.怎样使用自定义模版功能 我们在根目录节点"内容项目"节点上右键,在弹出的菜单中选择最下面的"自定义模版设置"菜单选项. 2.设置自定义模版 首先我们需要选择index.html首页文件,然后将"是否定制首页"选项选为"是". 3.了解模版目录结构 首页模版为根

升级IOS8游戏上传自定义头像功能失效的问题

为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VIP之后就可使用了上传自定义功能的特权,我们的游戏就"复制"了该功能.   具体实现就是点击游戏内换自定义头像的按钮后,调用不同平台相应的方法,获取用户选择的图片数据,然后将图片裁剪再传给后台保存至特定的目录下.   测试设备是ipad air2,系统版本IOS 8.0.1,点击游戏内的按钮

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

都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是很实用的.继上一篇<Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手>之后,本文将详细讲述如何为运行Windows 10 IoT Core系统的树莓派添加语音识别和语音交互功能. 1. 硬件准备 树莓派2/树莓派3.5V/2A电源.TF卡(8GB以上)

微信公众号教程(10)公众账号自定义回复功能

公众账号自定义回复功能 微信官方其实并不推荐经常群发消息,更多的是希望用户通过对话来自己获取服务或者进行搜索.今天我们就讲下如何使用开发模式做自定义回复. 目前公众账号可以接收的用户提交消息请求有四种类型,分别是文字.图片.地理位置和链接,而公众账号回复只有三种格式,文字.图文和音乐,也就是说用户互动的模式最多也就是12种,我们今天先讲三种即文字回复文字.文字回复图文.文字回复音乐. 这强调一下,微信的消息接口通讯有效时间是5秒,也就是说网络不稳定等原因很容易造成用户在5秒内接收不到回复消息,然

自定义消息处理功能(是小化程序到托盘)

现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象 FoxMail 3.0 NetVampire 3.0等都提供了这样的功能.实现这样的功能实际上并不复杂,在窗口最小化时,窗口会发出WM_SYSCOMMAND消息,你只要需要截取Windows 的WM_SYSCOMMAND消息,在窗口最小化时隐藏窗口并调用WindowsAPI函数Shell_NotifyIcon将定义的图标添加到任务栏 上,Shell_NotifyIc

Android百度地图之自定义绘制功能

我们可以在地图上绘制各种自定义的图形,包括点.折线.圆.多边形等等,尤其绘制点和折线非常实用,点可以用来标识所处的位置,折线可以用来描述走过的轨迹,结合前面GPS定位功能可以做出一些非常有意思的应用,下面应用百度Demo实现绘制的基本功能,代码如下: Activity: package com.home; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.