首页 > 代码库 > 转载:Windows 8风格应用35-触控输入

转载:Windows 8风格应用35-触控输入

Windows 8风格应用35-触控输入

时间:2013-02-21 22:36来源:博客园 作者:王祖康 点击:270次
引用 Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击、拖动或收缩等手势操作。另外Windows 8中将触摸、鼠标和笔/触笔交互是作为指针输入进行接收、处理和管理。 一、手势处理 首先我们来汇总一下Windows 8中常用的手势都有哪些。 1,点击:用一个手指触摸屏幕,然后抬起手指。 2
  

  引用

  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事件,将点击位置从集合中移除。

转载:Windows 8风格应用35-触控输入