Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android多點觸控技術和應用框架

Android多點觸控技術和應用框架

編輯:關於Android編程

Android多點觸控技術跟Linux輸入子系統緊密相關。本文將從應用的角度說明Android多點觸控技術的接口和應用。

一、多點觸控場景分析

網絡上有關Android多點觸控技術的文章多見於兩點拉伸進行圖片放大縮小。對於,這個場景有兩個特點:

1)兩點,而不是更多點;

2)對於觸點的移動事件(MotionEvent.ACTION_MOVE),只需要計算兩點的距離,進而判斷兩個點之間的距離是變大還是縮小,實現圖片放大或者縮小。

這個過程並不需要記錄這兩個點和之前的兩個點的關系。這樣講比較抽象,我們可以用一個例子來解釋。如下圖:

/

 

假設一個人拿著5支筆同時寫linux這個單詞的一個字母,那就得知道當前的5個觸點裡面的每個觸點和之前的觸點的對應關系,才能做到一支筆畫一個字母。

這個場景基本上能夠覆蓋到android多點觸控的所有接口的應用了。我們先來介紹接口,最後給出多點觸控的應用框架,它理論上可以處理很多點的觸控,而不僅僅是2點或者5點。

二、Android多點觸控接口

1.onTouchEvent

重載Activity的onTouchEvent接口以處理觸控信息。

public booleanonTouchEvent(MotionEvent event)

2.event.getAction

該接口與MotionEvent.ACTION_MASK想與可以得到觸控按鍵的類型,如按下、彈起和移動。

1)MotionEvent.ACTION_DOWN 第一個觸控點按下。

2)MotionEvent.ACTION_POINTER_DOWN 屏幕上已經有1個或者多個觸點的情況下再按下一個點。

3)MotionEvent.ACTION_UP 最後一個觸點彈起

4)MotionEvent.ACTION_POINTER_UP 非最後一個觸點彈起。

5)MotionEvent.ACTION_MOVE 觸點移動事件

3.event.getActionIndex()

獲得觸控點的索引,其代表觸控點在所有觸控點中的序號。例如A、B、C三個點依次按下,那麼分別對應的index是0、1、2。假設B點彈起,此時A、C的index將是0、1。這時假如新按一個點D,那A、C、D的index將是0、1、2。

從中我們發現,C點的index會因為其他點的彈起而變化。所以不能用該值來跟蹤同一個點。

4.event.getPointerId(actionIndex)

通過觸控點索引來獲得觸控點的唯一標識。其自觸點被按下開始,直到彈起,該值都不會發生變化,其是觸點的一個身份ID。例如A、B、C三個點依次按下,那麼分別對應的ID是0、1、2。假設B點彈起,此時A、C的ID依然是0、2。這時假如新按一個點D,那A、C、D的ID將是0、2、1。新增的觸點的ID會從0開始遞增,發現未用值即拿來用。

5.獲得觸點坐標

event.getX(actionIndex)、event.getY(actionIndex)獲得觸點距離所屬的View的坐標。event.getRawX(actionIndex)、event.getRawY(actionIndex)獲得觸點距離屏幕左上角的坐標。

三、多點觸控應用框架

/

 

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved