<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產(chǎn)品分類

      當(dāng)前位置: 首頁(yè) > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > 工業(yè)觸摸屏

      類型分類:
      科普知識(shí)
      數(shù)據(jù)分類:
      工業(yè)觸摸屏

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

      發(fā)布日期:2022-10-09 點(diǎn)擊率:44

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

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

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

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

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

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

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

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

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

          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)在有兩個(gè)手指在觸摸屏上,可通過(guò)如下方法分別獲得這兩個(gè)觸摸點(diǎn)的位置:

          float x1 = event.getX(0);

          float y1 = event.getY(0);

          float x2 = event.getX(1);

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

       


      下一篇: PLC、DCS、FCS三大控

      上一篇: 分析in-cell與on-cell

      主站蜘蛛池模板: 亚洲av日韩综合一区二区三区| 亚洲色欲久久久久综合网| 亚洲狠狠爱综合影院婷婷| 色噜噜狠狠色综合中国| 激情婷婷成人亚洲综合| 狠狠人妻久久久久久综合| 91精品国产综合久久久久久| 亚洲国产综合精品中文第一区| 狠狠色综合一区二区| 九色综合狠狠综合久久| 婷婷四房综合激情五月在线 | 色综合久久88色综合天天 | 女人和拘做受全程看视频日本综合a一区二区视频 | 亚洲国产精品综合久久一线| 国产综合久久久久| 国产成人综合久久精品免费| 99久久综合久中文字幕| 狠狠激情五月综合婷婷俺| 天天综合色天天综合| 亚洲五月丁香综合视频| 婷婷色香五月综合激激情| 国产成人综合亚洲AV第一页| 国产精品综合一区二区| 亚洲欧美日韩综合俺去了| 久久丁香五月天综合网| 亚洲情综合五月天| 香蕉国产综合久久猫咪| 亚洲伊人久久综合影院| 亚洲色偷偷综合亚洲AV伊人| 伊人久久亚洲综合影院| av一本久道久久综合久久鬼色| 国产亚洲综合视频| 色综合婷婷在线观看66| 国产一区二区三区亚洲综合| 国产精品一区二区综合| 一本色道久久88综合亚洲精品高清 | 一本久道久久综合狠狠躁| 九月丁香婷婷亚洲综合色| 狠狠综合久久综合88亚洲| 一本久久a久久精品vr综合| 99久久婷婷免费国产综合精品|