Windows Phone 触摸屏
Windows Phone 与 Windows Mobile 相比,一个明显的区别是 Windows Phone 支持电容屏,
不需要手写笔即可操作,支持多点触摸;当然,在这之前 Android 与 iOS 早已经支持了这些功
能,不过 Windows Phone 的多点触摸支持做得很出色,以笔者的经验来看,采用 Windows
Phone 的 HTC MOZART 手机要比 iPhone 3GS 多点触摸更容易操作。Windows Phone 的多点触摸
屏可以支持 4 个指头同时触摸,甚至更多。当然这对程序员来说不一定是好事,因为这意味着
需要更多的程序来实现。要测试多点触摸程序,Windows Phone 的手机必不可少,但是如果 PC
显示器支持多点触摸,那么使用 Windows Phone 模拟器也可以。
本节主要介绍两方面的内容:一是在 Silverlight 中如何处理低级别触摸屏事件(XNA 中低
级别触屏处理的方式与 Silverlight 类似);二是介绍 Manipulation Event 及 Routed Event。
4.3.1 Windows Phone 输入处理
本部分先介绍在 Silverlight 中是如何处理低级别触摸屏事件的,并且以开发中一个常见的
问题作为例程。在正式介绍之前,先来了解一下什么是 element。
1)element 的含义
Silverlight 编程中,element 有两个含义:一是 XML 中的标签;二是界面中显示的对象,即
UIElement 。 UIElement 是 非 常 重 要 的 一 个 基 类 , 所 有 的 控 件 , 如
Grid、TextBlock、Button、Image 等都集成于 UIElement 之中。
2)Silverlight 触屏
Silverlight 触屏的接口分为低级别和高级别两类,高级别的通过 UIElement 类的三个事件处
理来实现——ManipulationStarted、ManipulationDelta 和 ManipulationCompleted。后面我们会介
绍高级别事件处理接口;低级别事件处理接口则通过 Touch.FrameReported 实现。
Silverlight 触屏接口最重要的一个类是 TouchPoint,一个 TouchPoint 代表一个指头触摸屏幕。
TouchPoint 有 4 个只读属性(见表 4-2)。
表
4-2
TouchPoint
的只读属性
属性 类型 说 明
Action TouchAction
可以是 Down、Move 或者 Up
Position Point
表示触摸坐标,它是一个相对坐标,相对于 UIElement 左上角的位置
Size Size
Windows Phone 中目前这个还没有实际作用
TouchDevice TouchDevice
TouchDevice 对象有两个只读属性:
Id、int 类型用来区分是哪个指头
DirectlyOver、UIElement 类型表示最上层的 UI Element 是哪一个
要想使用低级别触屏接口,需要在程序中注册如下事件处理函数:
Touch.FrameReported += OnTouchFrameReported;
一般可以把这行代码放到页面的构造函数中。
OnTouchFrameReported 函数原型如下:
void OnTouchFrameReported(object sender, TouchFrameEventArgs args) { }
在这个处理函数中,可以通过 TouchFrameEventArgs 的以下三个方法获得所需的信息:
评论2
最新资源