亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

Android多點觸控技術和應用框架 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

    Android多點觸控技術跟Linux輸入子系統(tǒng)緊密相關,

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

。本文將從應用的角度說明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 第一個觸控點按下,

電腦資料

Android多點觸控技術和應用框架》(http://www.ishadingyu.com)。

    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。

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

    4.event.getPointerId(actionIndex)

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

    5.獲得觸點坐標

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

    三、多點觸控應用框架

   

最新文章