快速构建Windows 8风格应用35-触控输入

引用
Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击、拖动或收缩等手势操作。另外Windows 8中将触摸、鼠标和笔/触笔交互是作为指针输入进行接收、处理和管理。
一、手势处理
首先我们来汇总一下Windows 8中常用的手势都有哪些。

1,点击:用一个手指触摸屏幕,然后抬起手指。
2,长按:用一个手指触摸屏幕并保持不动。
3,滑动:用一个或多个手指触摸屏幕并向着同一方向移动。
4,轻扫:用一个或多个手指触摸屏幕并向着同一方向移动较短距离。
5,收缩:用两个或多个手指触摸屏幕,然后将手指并拢在一起或分开。
6,旋转:用两个或多个手指触摸屏幕并沿着顺时针或逆时针的弧线移动。
7,拉伸:用两个或多个手指触摸屏幕,然后将手指分开。
我们如何处理Windows 8中手势呢?
先来看一下Windows 8手势API:

这些手势都是以Manipulation API为基础进行处理的,其中Hold和Tap手势是基于Manipulation进行了封装,那么其他手势都是使用Manipulation API进行处理的。
以下是在Manipulation API几个常用事件:
- ManipulationStarting:在首次创建操作处理器时触发。
- ManipulationStarted:当输入设备对 UIElement 对象开始操作时触发。
- ManipulationDelta:当输入设备在操作期间更改位置时触发。
- ManipulationCompleted:对于 UIElement 对象的操作和延时完毕时触发。
- ManipulationInertiaStarting:当输入设备在操作期间与 UIElement 对象失去联系且延时开始时触发。
点击手势(双击、单击、右击):
这里以单击为例(双击、右击处理方式雷同):

通常我们可以实现通过点击事件可以处理跳转某一页面等操作,并且在“OpeningMessage_Tapped”中处理代码业务逻辑。
按下并保持手势:

通常我们可以按下应用中某一项并保持,浏览关于该项的更多信息,类似于WindowsPhone中长按某一条短信,可以选择复制,转发,删除等操作。
滑行拖动手势:

通常我们可以通过滑行拖动手势进行拖动图片,由于未提供滑行拖动手势操作的API,只能通过处理ManipulationDelta事件进行实现效果。
缩放手势:

我们可以通过该手势进行缩放图片,由于未提供缩放手势操作的API,只能通过处理ManipulationDelta事件进行实现效果。
旋转手势:

我们可以通过旋转手势进行旋转图片,其实逻辑比较简单,只需要处理当前图片角度+(图片角度*180/PI值),然后重新赋值就行了。
二、指针处理

以前应用中处理对鼠标,触控和手写笔的响应,需要多个不同的事件处理程序,很容易造成代码质量低劣,易于产生复制粘贴错误。微软通过分析不同设备和形式之间的一些共同点,最后将指针输入的方法整合到一个一致的API中。使用指针事件为鼠标,触控和手写笔创造了一致,简单的体验。
以下是指针事件处理常用的事件:
(以在图片上进行画图为例)
1,PointerPressed:手指,鼠标或手写笔点击屏幕时发生。

当指针按下时候记录收集当前指针。
2,PointerMoved:手指,鼠标或手写笔在屏幕上拖动时发生。

可以通过触发PointerMoved事件,将前一个点击位置和当前点击位置绘制成一条线。
3,PointerReleased:手指,鼠标或手写笔抬起时发生。

可以通过触发PointerReleased事件,将点击位置从集合中移除。
4,PointerExited:手指,鼠标或手写笔离开时发生。

可以通过触发PointerExited事件,将点击位置从集合中移除。
三、指针与手势系统的交互优势
1,有助于对应用性能提升
2,简化对大量输入发送自动触及的处理
3,减少编写的代码量
4,有助于缓解开发困境
更多关于手势与指针处理资料可参考:
2,快速入门:指针(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows);
3,快速入门:触摸输入(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows);
4,Input: XAML user input events sample;
快速构建Windows 8风格应用35-触控输入的更多相关文章
- 快速构建Windows 8风格应用17-布局控件
原文:快速构建Windows 8风格应用17-布局控件 本篇博文主要介绍三种常用的布局控件:Canvas.Grid.StackPanel. Panel类是开发Windows 8 Store应用中一个重 ...
- 快速构建Windows 8风格应用4-FlipView数据控件
原文:快速构建Windows 8风格应用4-FlipView数据控件 本篇博文主要介绍为什么使用FlipView控件.什么是FlipView控件.如何使用FlipView控件和FlipView控件最佳 ...
- 快速构建Windows 8风格应用5-ListView数据控件
原文:快速构建Windows 8风格应用5-ListView数据控件 本篇博文主要介绍什么是ListView数据控件.如何构建ListView数据控件. 什么是ListView数据控件? 1) Li ...
- 快速构建Windows 8风格应用6-GridView数据控件
原文:快速构建Windows 8风格应用6-GridView数据控件 本篇博文主要介绍什么是GridView数据控件.如何构建常用的GridView数据呈现样式. 什么是GridView数据控件? G ...
- 快速构建Windows 8风格应用18-基础控件I
原文:快速构建Windows 8风格应用18-基础控件I 本篇博文主要介绍Windows 8风格应用开发中常用的几种基础控件. ProgressRing: ProgressRing控件常见的效果图: ...
- 快速构建Windows 8风格应用19-基础控件II
原文:快速构建Windows 8风格应用19-基础控件II 本篇博文接着上篇博文<快速构建Windows 8风格应用18-基础控件I>介绍开发Windows 8风格应用中常用控件. Sli ...
- 快速构建Windows 8风格应用33-构建锁屏提醒
原文:快速构建Windows 8风格应用33-构建锁屏提醒 引言 Windows Phone(8&7.5)和Windows 8引入了锁屏概念,其实做过Windows Phone 7.5应用开发 ...
- 快速构建Windows 8风格应用32-构建辅助磁贴
原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...
- 快速构建Windows 8风格应用29-捕获图片与视频
原文:快速构建Windows 8风格应用29-捕获图片与视频 引言 本篇博文主要介绍Windows 8中相机的概念.捕获图片与视频的基本原理.如何实现捕获图片与视频.相机最佳实践. 一.相机 关于相机 ...
随机推荐
- MapXtreme DJ最短路径算法 全路径搜索算法
包括最短路径,全路径搜索算法演示程序请在http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 ShortWa ...
- 修改Hosts不生效的一个场景-web(转)
Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. ...
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出).Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQ ...
- HDoj-1879-畅通project-并查集
继续畅通project Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Java静态字段(属性、方法、类别)
假设域被定义为static,那么每个类中仅仅有一个这种域.作为对照,每个对象对于全部的实例域却都有自己的一份拷贝. 比如,假定须要给每个雇员赋予唯一的标识码. 这里给Employee类加入一个实例域i ...
- 编写可维护的Javascript读书笔记
写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...
- Memcache功能具体解释
memcache函数全部的方法列表例如以下: Memcache::add – 加入一个值.假设已经存在,则返回false Memcache::addServer – 加入一个可供使用的server地址 ...
- LESS使用介绍
使用: 在客户端使用 引入你的 .less 样式文件的时候要设置 rel 属性值为 "stylesheet/less": <link rel="stylesheet ...
- libmsgque官方主页
libmsgque 消息队列(MESSAGE QUEUE)库项目简析 注: 本文如果你已经有linux开发环境 请确保你使用本库时是tag版本号. target=libmsgque-1.0 本项目採用 ...
- linux_inux中find批量删除空文件及空文件夹脚本
1.{}和之间有一个空格 2.find . -name 之间也有空格 3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件 linux下批量删除空文件(大小等于0的文件)的方法 rm - ...