午夜av网址在线观看免费,欧洲久久久久久免费免费,欧美午夜一区二区福利视频,肥婆老熟妇精品视频在线

當(dāng)前位置:首頁 > 觸控技術(shù) > 觸摸屏技術(shù)
觸摸屏技術(shù)

解析Android系統(tǒng)多點(diǎn)觸摸屏基本原理

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

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

    MotionEvent.ACTION_DOWN:在第一個點(diǎn)被按下時觸發(fā)

    MotionEvent.ACTION_UP:當(dāng)屏幕上唯一的點(diǎn)被放開時觸發(fā)

    MotionEvent.ACTION_POINTER_DOWN:當(dāng)屏幕上已經(jīng)有一個點(diǎn)被按住,此時再按下其他點(diǎn)時觸發(fā)。

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

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

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

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

    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;

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

    float x1 = event.getX(0);

    float y1 = event.getY(0);

    float x2 = event.getX(1);

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

 


相關(guān)文章
精彩評論:
0  相關(guān)評論
平潭县| 赣州市| 富阳市| 黑山县| 中方县| 金寨县| 肥城市| 舒兰市| 松原市| 额济纳旗| 敖汉旗| 西吉县| 定陶县| 内黄县| 罗平县| 景谷| 田东县| 陈巴尔虎旗| 平定县| 五常市| 巢湖市| 开平市| 驻马店市| 邯郸市| 民和| 农安县| 怀柔区| 绍兴市| 东台市| 溧水县| 临城县| 太保市| 贵定县| 胶州市| 商南县| 三门峡市| 马公市| 临沭县| 巴中市| 宿松县| 青神县|