韩国理伦电源2020,一人吸乳一人做爰,欧美丰满熟妇bbb久久久,日本人も中国人も汉字を

當前位置:首頁 > 觸控技術 > 觸摸屏技術
觸摸屏技術

解析Android系統多點觸摸屏基本原理

    最近想在項目中實現多指操作,可惜android原生的sdk對多指的支持不太好,只能自己寫了。

    在android的中,MotionEvent event代表的是一個觸摸事件。我們對屏幕的幾乎所有操作都會觸發該事件,如點擊、放開、滑動等。不同的事件在MotionEvent中有不同的id,根據id的不同可以判斷觸摸事件屬于哪個手指。我們還可以根據event.getAction() & MotionEvent.ACTION_MASK的結果來判斷是何種事件,是ACTION_DOWN、ACTION_UP還是ACTION_MOVE。下面介紹下我們將使用到的五個操作:

    MotionEvent.ACTION_DOWN:在第一個點被按下時觸發

    MotionEvent.ACTION_UP:當屏幕上唯一的點被放開時觸發

    MotionEvent.ACTION_POINTER_DOWN:當屏幕上已經有一個點被按住,此時再按下其他點時觸發。

    MotionEvent.ACTION_POINTER_UP:當屏幕上有多個點被按住,松開其中一個點時觸發(即非最后一個點被放開時)。

    MotionEvent.ACTION_MOVE:當有點在屏幕上移動時觸發。值得注意的是,由于它的靈敏度很高,而我們的手指又不可能完全靜止(即使我們感覺不到移動,但其實我們的手指也在不停地抖動),所以實際的情況是,基本上只要有點在屏幕上,此事件就會一直不停地被觸發。

    舉例來講:當我們放一個食指到屏幕上時,觸發ACTION_DOWN事件;再放一個拇指到屏幕上,觸發ACTION_POINTER_DOWN事件;此時再把食指或拇指放開,都會觸發ACTION_POINTER_UP事件;再放開最后一個手指,觸發ACTION_UP事件;而同時在整個過程中,ACTION_MOVE事件會一直不停地被觸發。

    根據上面這些原理,就可以判斷在觸摸過程中有多少個手指在屏幕上:

    switch (event.getAction() & MotionEvent.ACTION_MASK) {

    case MotionEvent.ACTION_DOWN:

    mode = 1;

    break;

    case MotionEvent.ACTION_UP:

    mode = 0;

    break;

    case MotionEvent.ACTION_POINTER_UP:

    mode -= 1;

    break;

    case MotionEvent.ACTION_POINTER_DOWN:

    mode += 1;

    break;

    }假如現在有兩個手指在觸摸屏上,可通過如下方法分別獲得這兩個觸摸點的位置:

    float x1 = event.getX(0);

    float y1 = event.getY(0);

    float x2 = event.getX(1);

    float y2 = event.getY(2);上面大體就是多指觸摸的基本原理了。要在這個基礎之上實現多指觸摸,還有很長的路要走。

 


相關文章
精彩評論:
0  相關評論
主站蜘蛛池模板: 常山县| 惠水县| 玉龙| 焉耆| 霍邱县| 策勒县| 富锦市| 富宁县| 丹东市| 仁化县| 新疆| 景谷| 高淳县| 阳山县| 墨竹工卡县| 开化县| 铜陵市| 林州市| 汕头市| 德格县| 中卫市| 武乡县| 七台河市| 菏泽市| 鹤峰县| 营山县| 罗甸县| 临桂县| 清镇市| 安龙县| 昌都县| 永善县| 靖远县| 什邡市| 公安县| 建湖县| 绥德县| 井陉县| 宜州市| 繁峙县| 成安县|