www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]Android移動(dòng)應(yīng)用觸摸屏的實(shí)現(xiàn)和優(yōu)化方案

 

摘要:隨著智能手機(jī)平臺(tái)的發(fā)展,Android平臺(tái)應(yīng)用越來越豐富,用戶體驗(yàn)要求也越來越高。Android 平臺(tái)捕獲用戶的消息主要分為按鍵,觸摸屏和軌跡球三種類型,現(xiàn)階段觸摸響應(yīng)是趨勢(shì)。本文主要研究了Android 平臺(tái)的消息響應(yīng)機(jī)制,著重對(duì)游戲應(yīng)用中的觸摸屏響應(yīng)進(jìn)行了實(shí)現(xiàn)和優(yōu)化,優(yōu)化后的觸摸接口避免了觸摸過程中的各種問題,具有更好的用戶體驗(yàn) .

0 引言

近些年來,隨著3G 網(wǎng)絡(luò)的大規(guī)模建設(shè)和智能手機(jī)的迅速普及,移動(dòng)互聯(lián)網(wǎng)時(shí)代已經(jīng)到來。作為Google 推出的一款操作系統(tǒng),Android 自問世以來就吸引了人們廣泛的關(guān)注,受到眾多廠商和開發(fā)者的青睞。Android 是一個(gè)開放、完整、免費(fèi)的手機(jī)平臺(tái),強(qiáng)大的開源特性吸引了越來越多的開發(fā)者,Android的版本如今已由最初的1.1 升級(jí)到最新的4.0,功能越來越強(qiáng)大,用戶體驗(yàn)越來越好,在Android 平臺(tái)上發(fā)布的應(yīng)用產(chǎn)品更加豐富多彩。

Android 平臺(tái)上的應(yīng)用越來越多,人們對(duì)應(yīng)用的要求越來越高?,F(xiàn)階段觸屏手機(jī)是趨勢(shì),觸摸是人們與應(yīng)用交互的主流方式,人們對(duì)觸摸的靈敏度,簡(jiǎn)易性和方便度要求越來越高,有必要優(yōu)化應(yīng)用的觸摸效果。

1 Android 平臺(tái)的觸摸機(jī)制

一般而言,事件是用戶與UI(圖形界面)進(jìn)行交互的時(shí)候所觸發(fā)的操作。例如在手機(jī)屏幕上觸摸特定的區(qū)域就會(huì)觸發(fā)對(duì)應(yīng)的事件,在Android 中這些事件將被傳送到事件處理器,它是一個(gè)專門接受事件對(duì)象并對(duì)其進(jìn)行翻譯和處理的方法。

在 Android 中用戶事件響應(yīng)是很重要的,用戶消息主要來源于3 種硬件外部設(shè)備:觸摸響應(yīng)(ONTouch系列方法)、按鍵響應(yīng)(onKey系列方法)和軌跡球(Trackball)。不論我們是通過觸摸方式與屏幕交互,還是使用軌跡球來交互,任何與屏幕相關(guān)的交互都是與屏幕相應(yīng)位置上的視圖控件的交互。現(xiàn)在 Android 系統(tǒng)的手機(jī)幾乎全是觸屏,基本的按鍵越來越少,觸摸屏響應(yīng)成為發(fā)展的大趨勢(shì),所以在應(yīng)用設(shè)計(jì)的時(shí)候主要考慮觸摸的效果問題,著重優(yōu)化用戶觸摸響應(yīng)。

圖1 Android 平臺(tái)用戶消息處理流程

圖 1 詳細(xì)說明了各種用戶操作被系統(tǒng)捕獲的過程。系統(tǒng)捕獲用戶的響應(yīng)后,由Linux 驅(qū)動(dòng)捕獲用戶的消息,經(jīng)過Android 框架層的AcTIvity Manager 的作用傳遞給Activity中的系統(tǒng)方法,通過執(zhí)行相應(yīng)的系統(tǒng)方法更新View 類,消息傳遞至Application Framework 層,最后調(diào)用Linux 驅(qū)動(dòng),控制著界面的繪制和更新。在Android 工程中,觸摸相關(guān)的接口函數(shù)主要封裝在android.view.KeyEvent 類中,寫觸摸屏操控的時(shí)候首先導(dǎo)入該類的包,在Activity的子類中對(duì)該方法進(jìn)行說明即可。Android 的事件處理機(jī)制相對(duì)簡(jiǎn)單,對(duì)于事件處理機(jī)制不必詳細(xì)理解,實(shí)現(xiàn)各種響應(yīng)時(shí)只需具體實(shí)現(xiàn)各個(gè)方法即可,各個(gè)方法的具體實(shí)現(xiàn)在View類中進(jìn)行,下面著重說明Android 平臺(tái)觸摸響應(yīng)的實(shí)現(xiàn)。

[!--empirenews.page--]

2 Android 平臺(tái)觸摸響應(yīng)的實(shí)現(xiàn)

一般而言在 Android 中,對(duì)于觸摸事件的處理如同UI 事件一樣,主要通過兩種方法來處理,一種是利用View 類的onTouchEvent()方法,一種是實(shí)現(xiàn)OnTouchLiSTener 接口的onTouch()方法。系統(tǒng)中當(dāng)這兩種方法都存在的前提下,系統(tǒng)將會(huì)優(yōu)先采用OnTouchListener接口回調(diào)方法進(jìn)行處理。一般在簡(jiǎn)單的UI 設(shè)計(jì)界面重寫onTouchListener()方法,涉及到多個(gè)Activity 切換時(shí)在方法中實(shí)現(xiàn)Activity 信息保存與跳轉(zhuǎn)即可。

對(duì)于大型應(yīng)用而言,界面狀態(tài)比較復(fù)雜,觸摸響應(yīng)需要詳細(xì)處理,系統(tǒng)提供了一個(gè)專門用于處理用戶觸摸事件的接口函數(shù)onTouchEvent()。實(shí)際開發(fā)過程中只需先聲明此接口函數(shù),然后在主View類中重寫該函數(shù)實(shí)現(xiàn)具體的觸摸效果即可。下面是接口函數(shù)的聲明:

觸屏監(jiān)聽方法中只有一個(gè)MotionEvent event 參數(shù),此類的實(shí)例中保存了玩家觸屏的各種動(dòng)作,常見的有:按下動(dòng)作、移動(dòng)動(dòng)作、多點(diǎn)觸屏、屏幕壓力等,在此類中定義了很多動(dòng)作的靜態(tài)常量值,通過event.getAction()方法獲取玩家的動(dòng)作與所需動(dòng)作常量值進(jìn)行匹配。

上面是聲音界面的觸摸響應(yīng)處理:event.getAction()是鍵控的類型,是MotionEvent 類的系統(tǒng)方法,獲取當(dāng)前的觸摸響應(yīng)。當(dāng)向下觸摸屏幕時(shí),就響應(yīng)MotionEvent.ACTION_DOWN這個(gè)動(dòng)作,當(dāng)觸點(diǎn)滿足給定的區(qū)間范圍,就執(zhí)行相當(dāng)?shù)牟僮?,?shí)現(xiàn)游戲的狀態(tài)跳轉(zhuǎn)。觸摸范圍在劃分的時(shí)候最好以屏幕的相對(duì)位置為參考點(diǎn),這樣在應(yīng)用橫豎屏的處理或者應(yīng)用移植的時(shí)候會(huì)更方便,避免了頻繁修改參考坐標(biāo)的值。在程序入口處繼承Activity 的子類中可以獲取當(dāng)前設(shè)備屏幕寬和高的具體屬性,這樣觸摸范圍確定時(shí)以屏幕的寬和高的屬性值來定位就可以了。整個(gè)觸摸部分的流程圖如下:

圖2 觸摸屏操作響應(yīng)的具體流程

圖 2 顯示的是游戲過程中觸摸屏幕時(shí)具體的響應(yīng)流程,主要涉及到Activity 類和View類。在Activity 類中進(jìn)行觸摸方法onTouchEvent()的聲明,在View 類中對(duì)該方法進(jìn)行詳細(xì)定義和說明。當(dāng)觸摸響應(yīng)后,觸發(fā)事件響應(yīng)機(jī)制,event 對(duì)象通過getAction()方法獲取觸摸響應(yīng),獲得當(dāng)前的觸摸點(diǎn)坐標(biāo)event.getX()和event.getY(),與方法中的觸摸范圍進(jìn)行判斷,若在區(qū)域內(nèi)則執(zhí)行觸摸響應(yīng)。觸摸響應(yīng)執(zhí)行后需要在觸摸釋放MotionEvent.ACTION_DOWN進(jìn)行觸摸釋放的處理,及時(shí)釋放當(dāng)前的觸摸響應(yīng)。

3 Android 平臺(tái)觸摸響應(yīng)的優(yōu)化

值得注意的是,上面觸摸響應(yīng)MotionEvent.ACTION_DOWN 中,特意定義了一個(gè)臨時(shí)觸摸計(jì)數(shù)變量keyCount,當(dāng)計(jì)數(shù)變量加到一定的程度時(shí)候才執(zhí)行觸摸響應(yīng)。這樣處理能有效地防止連續(xù)觸摸響應(yīng),觸摸不釋放而直接跳到下一個(gè)狀態(tài),觸摸變量的設(shè)置在各個(gè)界面跳轉(zhuǎn)過程中尤其是游戲菜單中各界面跳轉(zhuǎn)中是很有必要的。

觸摸響應(yīng)中除了各個(gè)菜單界面的響應(yīng)以外還有一個(gè)重要的響應(yīng)就是游戲中對(duì)主角的操控。主游戲界面的觸摸響應(yīng)原理和菜單界面是一致的,不同的是觸摸判斷范圍的選取有差異,菜單界面各個(gè)觸摸范圍是固定的,而游戲界面觸摸區(qū)域的劃定是動(dòng)態(tài)的。由于在角色扮演等游戲中主角是核心人物,因此對(duì)主角的操控的觸摸響應(yīng)顯得尤其重要,進(jìn)行觸摸設(shè)計(jì)的時(shí)候一般以主角為中心進(jìn)行設(shè)計(jì),以主角的坐標(biāo)作為基本點(diǎn)來判斷。

圖3 主角控制時(shí)區(qū)域的劃分

圖 3 所示的是主角移動(dòng)時(shí)候的區(qū)域劃分,以水平和垂直坐標(biāo)軸的交點(diǎn)作為主角的坐標(biāo)中心點(diǎn),將主角周邊的區(qū)域劃分為10 個(gè)區(qū)域,觸點(diǎn)在區(qū)域9-10 的時(shí)候方向向右,對(duì)稱的區(qū)域5-6 的時(shí)候方向向左,區(qū)域7-8 的時(shí)候方向向下。對(duì)于區(qū)域1-4 進(jìn)行進(jìn)一步的劃分,2-3 區(qū)域方向向上,只響應(yīng)向上的操作,區(qū)域1 同時(shí)響應(yīng)右鍵和上鍵,區(qū)域4 同時(shí)響應(yīng)左鍵和上鍵。這樣對(duì)區(qū)域進(jìn)行細(xì)化符合實(shí)際情況,區(qū)域1 和區(qū)域4 的角度范圍可以根據(jù)實(shí)際情況微調(diào)。

以主角為中心劃分主角周邊的區(qū)域以后,斜上方區(qū)域響應(yīng)斜上方的鍵控,即響應(yīng)上鍵的時(shí)候同時(shí)響應(yīng)左鍵或者右鍵;右邊區(qū)域響應(yīng)右鍵;上下區(qū)域分別響應(yīng)上和下鍵,響應(yīng)按鍵后執(zhí)行對(duì)應(yīng)的觸摸按鍵操作,這樣按照區(qū)間劃分區(qū)域具有很好的用戶體驗(yàn)。這的注意的是,主角操控的觸摸鍵控一定得對(duì)應(yīng)觸摸按鍵的釋放,要不然系統(tǒng)接收用戶的觸摸響應(yīng)后對(duì)應(yīng)的邏輯會(huì)一直執(zhí)行下去。當(dāng)event.getAction()狀態(tài)為MotionEvent.ACTION_UP 時(shí)執(zhí)行觸摸按鍵的釋放,觸摸按鍵釋放的操作如下:

if ((player.keyStatus & SonicPlayer.KEY_LEFT) == SonicPlayer.KEY_LEFT)

{player.keyUp(SonicPlayer.KEY_LEFT);}//釋放具體的觸摸響應(yīng)

觸摸屏接口設(shè)計(jì)模塊的改進(jìn)在于根據(jù)主角的中心點(diǎn)細(xì)化區(qū)域,然后根據(jù)劃分的區(qū)域執(zhí)行相應(yīng)的操作,同時(shí)在觸摸的響應(yīng)時(shí)增加了計(jì)數(shù)變量。

4 結(jié)論

Android 平臺(tái)的觸摸響應(yīng)是非常重要的,本身的觸摸事件處理機(jī)制比較復(fù)雜,但是觸摸響應(yīng)實(shí)現(xiàn)時(shí)非常簡(jiǎn)單,只需實(shí)現(xiàn)相關(guān)方法即可。應(yīng)用的觸屏響應(yīng)主要分為菜單界面的觸摸響應(yīng)和游戲界面的觸摸響應(yīng),這兩部分的實(shí)現(xiàn)機(jī)制是相同的,只不過劃定觸摸范圍的方法不同。

在菜單各個(gè)界面中主要依靠菜單中各個(gè)圖片相對(duì)屏幕的像素位置來確定觸摸范圍,然后實(shí)現(xiàn)觸屏響應(yīng);在游戲界面主要以主角為中心,根據(jù)上述的區(qū)域范圍劃分來確定觸摸范圍和相應(yīng)的操作。在實(shí)現(xiàn)觸摸方法的過程中,觸摸臨時(shí)計(jì)數(shù)變量的設(shè)置非常必要,起到緩沖的作用,防止一次觸摸鍵控不釋放引發(fā)多個(gè)界面的響應(yīng)。本論文主要對(duì)Android 平臺(tái)的觸摸響應(yīng)進(jìn)行了實(shí)現(xiàn)和優(yōu)化,大大增強(qiáng)了用戶體驗(yàn),具有很強(qiáng)的應(yīng)用價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

基于ABB機(jī)器人生產(chǎn)線 ,設(shè)計(jì)了一種西門子PLC自保護(hù)智能控制系統(tǒng) 。該系統(tǒng)采用HK-FKGD40無線手持報(bào)警器 , 受機(jī)器人擠壓時(shí)人員通過該報(bào)警器便可觸發(fā)機(jī)器人智能判斷 、自動(dòng)回退運(yùn)動(dòng)實(shí)現(xiàn)自我解救 , 同時(shí)系統(tǒng)發(fā)出聲光...

關(guān)鍵字: 無線手持報(bào)警器 自保護(hù);智能 PLC ABB機(jī)器人 觸摸屏

在科技飛速發(fā)展的當(dāng)下,智能設(shè)備已深度融入人們的生活與工作。其中,PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)作為一款集信息輸入、存儲(chǔ)、管理和傳遞于一體,且具備辦公、娛樂、移動(dòng)通信等多種功能...

關(guān)鍵字: 智能設(shè)備 觸摸屏 微控制器

其他電腦(比如安卓手機(jī)/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問一些東西。你可以使用android的USB OTG功能(是的,幾乎每個(gè)android都支持這個(gè)功能,你可以將鼠標(biāo)和鍵盤連接到它)。

關(guān)鍵字: USB 鼠標(biāo) Android 樹莓派

蘇州 2025年5月27日 /美通社/ -- 5月24日-26日,第26屆全國醫(yī)院建設(shè)大會(huì)暨國際醫(yī)院建設(shè)、裝備及管理展覽會(huì)(CHCC 2025)在武漢舉行。藝卓(EIZO)攜手術(shù)室視覺顯示解決方案參展,以科技...

關(guān)鍵字: HC 醫(yī)學(xué)影像 IO 觸摸屏

Google 宣布與中國 AR 科技公司 XREAL 達(dá)成深度戰(zhàn)略合作,聯(lián)合推出全球首款專為 Android XR 平臺(tái)打造的旗艦級(jí) AR 眼鏡 Project Aura。

關(guān)鍵字: Google XREAL Android XR眼鏡 AR

隨著手工釀造的普及和復(fù)雜程度的不斷提高,許多釀酒師——尤其是小規(guī)模或獨(dú)立的釀酒師——仍然依靠手工方法來記錄和跟蹤關(guān)鍵數(shù)據(jù),如溫度、pH值、體積和比重。這些讀數(shù)通常使用手動(dòng)儀器,記錄在紙上或分散在電子表格和文檔中,沒有集中...

關(guān)鍵字: 觸摸屏 物聯(lián)網(wǎng) DS18B20 傳感器

繼停止維護(hù)AOSP開源項(xiàng)目后,谷歌母公司Alphabet近日被曝在其安卓系統(tǒng)(Android)、Pixel手機(jī)以及Chrome瀏覽器等部門裁員數(shù)百人。這一舉措引發(fā)了業(yè)界的廣泛關(guān)注,也引發(fā)了對(duì)谷歌未來業(yè)務(wù)布局的諸多猜測(cè)。

關(guān)鍵字: 谷歌 AOSP Android 裁員

在本教程中,我們將使用Capacitor 6、Angular和TypeScript構(gòu)建一個(gè)Android應(yīng)用程序,該應(yīng)用程序通過串行端口連接到BleuIO USB加密狗。該應(yīng)用程序允許用戶直接從Android設(shè)備發(fā)送和接...

關(guān)鍵字: Android USB 電容器 BLE設(shè)備

早前媒體報(bào)道谷歌將停止維護(hù)Android開源項(xiàng)目(AOSP),將Android開發(fā)全面轉(zhuǎn)向內(nèi)部閉源分支,目前這一消息已經(jīng)得到谷歌官方確認(rèn)。

關(guān)鍵字: 谷歌 Android 開源
關(guān)閉