Android多點(diǎn)觸控開(kāi)發(fā)原理
編輯:寒青 [ 2010-9-29 11:19:10 ] 文章來(lái)源:數(shù)字標(biāo)牌網(wǎng)
Android多點(diǎn)觸控在本質(zhì)上需要LCD驅(qū)動(dòng)和程序本身設(shè)計(jì)上支持,目前市面上HTC、Motorola和Samsung等知名廠商只要使用電容屏觸控原理的手機(jī)均可以支持多點(diǎn)觸控Multitouch技術(shù),對(duì)于網(wǎng)頁(yè)縮放、手勢(shì)操作上有更好的用戶(hù)體驗(yàn)。 在Android平臺(tái)上事件均使用了MotionEvent對(duì)象方式處理,比如開(kāi)始觸控時(shí)會(huì)觸發(fā)ACTION_DOWN而移動(dòng)操作時(shí)為ACTION_MOVE最終放開(kāi)手指時(shí)觸發(fā)ACTION_UP事件。當(dāng)然還有用戶(hù)無(wú)規(guī)則的操作可能觸發(fā)ACTION_CANCEL這個(gè)動(dòng)作。
首先Android開(kāi)發(fā)網(wǎng)提醒大家多點(diǎn)觸控需要LCD驅(qū)動(dòng)和應(yīng)用軟件兩個(gè)支持才能實(shí)現(xiàn),所以部分比較老的,比如Android 2.1以前或在北美上市的手機(jī)可能無(wú)法支持多點(diǎn)觸控在固件上,由于Apple專(zhuān)利原因在歐洲和亞太地區(qū)的Android 2.1以后的新款機(jī)型固件均已經(jīng)在屏幕驅(qū)動(dòng)中支持,同時(shí)模擬器也無(wú)法實(shí)現(xiàn)多點(diǎn)觸控的測(cè)試。
下面Android123一起用Android 2.0或以上SDK中的方法來(lái)實(shí)現(xiàn)如何通過(guò)應(yīng)用層支持多點(diǎn)觸控操作,對(duì)于常規(guī)的控件觸控操作在內(nèi)部為View的setOnTouchListener()接口實(shí)現(xiàn)的onTouchEvent()方法來(lái)處理。對(duì)于onTouchEvent方法的參數(shù)MotionEvent我們可以詳細(xì)處理來(lái)實(shí)現(xiàn)對(duì)多點(diǎn)觸控的了解,比如
event.getAction() //獲取觸控動(dòng)作比如ACTION_DOWN
event.getPointerCount(); //獲取觸控點(diǎn)的數(shù)量,比如2則可能是兩個(gè)手指同時(shí)按壓屏幕
event.getPointerId(nID); //對(duì)于每個(gè)觸控的點(diǎn)的細(xì)節(jié),我們可以通過(guò)一個(gè)循環(huán)執(zhí)行g(shù)etPointerId方法獲取索引
event.getX(nID); //獲取第nID個(gè)觸控點(diǎn)的x位置
event.getY(nID); //獲取第nID個(gè)點(diǎn)觸控的y位置
event.getPressure(nID); //LCD可以感應(yīng)出用戶(hù)的手指壓力,當(dāng)然具體的級(jí)別由驅(qū)動(dòng)和物理硬件決定的
event.getDownTime() //按下開(kāi)始時(shí)間
event.getEventTime() // 事件結(jié)束時(shí)間
event.getEventTime()-event.getDownTime()); //總共按下時(shí)花費(fèi)時(shí)間
有關(guān)Android多點(diǎn)觸控的更詳細(xì)技術(shù)由于目前兼容性和固件問(wèn)題android123將會(huì)在以后的內(nèi)容中詳細(xì)討論,這里給大家起到拋磚引玉的作用。
有意與本網(wǎng)合作者請(qǐng)與《數(shù)字標(biāo)牌網(wǎng)》聯(lián)系。未經(jīng)《數(shù)字標(biāo)牌網(wǎng)》書(shū)面授權(quán),請(qǐng)勿轉(zhuǎn)載或建立鏡像,否則即為侵權(quán)。
數(shù)字告示