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,有助於緩解開發困境