久久99热66热这里只有精品,特黄特色的大片在线观看,亚洲日本三级在线观看,国产三级农村妇女在线,亚洲av毛片免费在线观看,哺乳叫自慰在线看,天天干美女av网

Android多點(diǎn)觸控技術(shù)和應(yīng)用框架 -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.dameics.com - 電腦資料】

    Android多點(diǎn)觸控技術(shù)跟Linux輸入子系統(tǒng)緊密相關(guān),

Android多點(diǎn)觸控技術(shù)和應(yīng)用框架

。本文將從應(yīng)用的角度說明Android多點(diǎn)觸控技術(shù)的接口和應(yīng)用。

    一、多點(diǎn)觸控場景分析

    網(wǎng)絡(luò)上有關(guān)Android多點(diǎn)觸控技術(shù)的文章多見于兩點(diǎn)拉伸進(jìn)行圖片放大縮小。對于,這個(gè)場景有兩個(gè)特點(diǎn):

    1)兩點(diǎn),而不是更多點(diǎn);

    2)對于觸點(diǎn)的移動事件(MotionEvent.ACTION_MOVE),只需要計(jì)算兩點(diǎn)的距離,進(jìn)而判斷兩個(gè)點(diǎn)之間的距離是變大還是縮小,實(shí)現(xiàn)圖片放大或者縮小。

    這個(gè)過程并不需要記錄這兩個(gè)點(diǎn)和之前的兩個(gè)點(diǎn)的關(guān)系。這樣講比較抽象,我們可以用一個(gè)例子來解釋。如下圖:

   

    假設(shè)一個(gè)人拿著5支筆同時(shí)寫linux這個(gè)單詞的一個(gè)字母,那就得知道當(dāng)前的5個(gè)觸點(diǎn)里面的每個(gè)觸點(diǎn)和之前的觸點(diǎn)的對應(yīng)關(guān)系,才能做到一支筆畫一個(gè)字母。

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

    二、Android多點(diǎn)觸控接口

    1.onTouchEvent

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

    public booleanonTouchEvent(MotionEvent event)

    2.event.getAction

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

    1)MotionEvent.ACTION_DOWN 第一個(gè)觸控點(diǎn)按下,

電腦資料

Android多點(diǎn)觸控技術(shù)和應(yīng)用框架》(http://www.dameics.com)。

    2)MotionEvent.ACTION_POINTER_DOWN 屏幕上已經(jīng)有1個(gè)或者多個(gè)觸點(diǎn)的情況下再按下一個(gè)點(diǎn)。

    3)MotionEvent.ACTION_UP 最后一個(gè)觸點(diǎn)彈起

    4)MotionEvent.ACTION_POINTER_UP 非最后一個(gè)觸點(diǎn)彈起。

    5)MotionEvent.ACTION_MOVE 觸點(diǎn)移動事件

    3.event.getActionIndex()

    獲得觸控點(diǎn)的索引,其代表觸控點(diǎn)在所有觸控點(diǎn)中的序號。例如A、B、C三個(gè)點(diǎn)依次按下,那么分別對應(yīng)的index是0、1、2。假設(shè)B點(diǎn)彈起,此時(shí)A、C的index將是0、1。這時(shí)假如新按一個(gè)點(diǎn)D,那A、C、D的index將是0、1、2。

    從中我們發(fā)現(xiàn),C點(diǎn)的index會因?yàn)槠渌c(diǎn)的彈起而變化。所以不能用該值來跟蹤同一個(gè)點(diǎn)。

    4.event.getPointerId(actionIndex)

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

    5.獲得觸點(diǎn)坐標(biāo)

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

    三、多點(diǎn)觸控應(yīng)用框架

   

最新文章