程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Windows 8風格應用開發入門 三十五 觸控輸入

Windows 8風格應用開發入門 三十五 觸控輸入

編輯:關於.NET

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved