當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]Android移動應用觸摸屏的實現和優(yōu)化方案

 

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

0 引言

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

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

1 Android 平臺的觸摸機制

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

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

圖1 Android 平臺用戶消息處理流程

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

[!--empirenews.page--]

2 Android 平臺觸摸響應的實現

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

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

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

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

圖2 觸摸屏操作響應的具體流程

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

3 Android 平臺觸摸響應的優(yōu)化

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

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

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

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

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

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

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

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

4 結論

Android 平臺的觸摸響應是非常重要的,本身的觸摸事件處理機制比較復雜,但是觸摸響應實現時非常簡單,只需實現相關方法即可。應用的觸屏響應主要分為菜單界面的觸摸響應和游戲界面的觸摸響應,這兩部分的實現機制是相同的,只不過劃定觸摸范圍的方法不同。

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

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉