專(zhuān)利名稱(chēng):在j2me平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及J2ME技術(shù)領(lǐng)域,特別涉及在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法及
直ο
背景技術(shù):
觸屏操作由于其操作上的簡(jiǎn)單方便,已經(jīng)成為了今后手機(jī)操作方式的主要研究方向,目前在采用安卓Android平臺(tái)的觸屏手機(jī)以及iPhone手機(jī)上,都已經(jīng)實(shí)現(xiàn)了加速滑動(dòng)的效果。所謂加速滑動(dòng),即用戶(hù)在按下觸屏后不松開(kāi),并以一定的加速度在觸屏上滑動(dòng)一段距離后再松開(kāi),此時(shí),觸屏響應(yīng)此操作,使界面隨用戶(hù)的滑動(dòng)操作進(jìn)行加速滑動(dòng),并在用戶(hù)松開(kāi)觸屏后模擬慣性現(xiàn)象,使界面繼續(xù)滑動(dòng)一段距離并逐漸停止。加速滑動(dòng)要求系統(tǒng)能夠感應(yīng)用戶(hù)在觸屏上進(jìn)行拖拽操作的加速度,并在用戶(hù)松手后根據(jù)這個(gè)加速度繼續(xù)滑動(dòng)一段距離從而模擬真實(shí)的慣性滑動(dòng)。對(duì)于界面中內(nèi)容較長(zhǎng),用戶(hù)需要盡快看到底部?jī)?nèi)容的情況,加速滑動(dòng)可以有效的幫助用戶(hù)以較快的速度將界面移動(dòng)到底部,并且得到更加逼真的操作體驗(yàn)。而在現(xiàn)有為機(jī)頂盒、移動(dòng)電話(huà)和PDA之類(lèi)嵌入式消費(fèi)電子設(shè)備提供的Java語(yǔ)言平臺(tái),包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化Java API的J2ME(Java 2Micro Edition)平臺(tái)的觸屏手機(jī)中,由于J2ME平臺(tái)對(duì)于觸控操作的API設(shè)計(jì)非常簡(jiǎn)單,只定義了按下、拖拽、松開(kāi)這3個(gè)操作事件,按下事件在按壓觸屏?xí)r響應(yīng),松開(kāi)事件在松開(kāi)觸屏?xí)r響應(yīng),拖拽事件在按壓觸屏后,在觸屏表面移動(dòng)時(shí)按照一定的時(shí)間間隔響應(yīng)。因此,現(xiàn)有的J2ME平臺(tái)只能實(shí)現(xiàn)對(duì)用戶(hù)的短按和普通的拖拽操作進(jìn)行判斷和實(shí)現(xiàn),如用戶(hù)在按下觸屏后,未在觸屏表面進(jìn)行移動(dòng), 然后松開(kāi),則判斷為普通的短按操作,而若用戶(hù)在按下觸屏后,在觸屏表面進(jìn)行移動(dòng),然后再松開(kāi),則判斷為普通的拖拽操作。正是由于現(xiàn)有J2ME平臺(tái)對(duì)于觸控操作的支持不足,使得現(xiàn)有J2ME平臺(tái)無(wú)法對(duì)用戶(hù)在觸屏上的拖拽操作的加速度進(jìn)行感應(yīng),無(wú)法判斷出用戶(hù)是進(jìn)行普通拖拽操作還是加速拖拽操作,也就無(wú)法實(shí)現(xiàn)類(lèi)似Android平臺(tái)和iPhone系統(tǒng)中的加速滑動(dòng)的觸控效果。另夕卜, J2ME平臺(tái)目前也不能區(qū)分長(zhǎng)按和短按的操作,無(wú)法針對(duì)長(zhǎng)按和短按進(jìn)行不同的響應(yīng)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法,能夠在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)的觸控效果。本發(fā)明實(shí)施例提供一種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的裝置,能夠在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)的觸控效果。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法,該方法包括以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。較佳地,所述以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,包括用戶(hù)的拖拽操作過(guò)程中,從響應(yīng)按下事件開(kāi)始,每隔一個(gè)預(yù)設(shè)的采樣時(shí)間間隔,響應(yīng)一個(gè)拖拽事件,直到響應(yīng)松開(kāi)事件為止,每一個(gè)響應(yīng)點(diǎn)為一個(gè)采樣點(diǎn)。較佳地,所述得到采樣點(diǎn)的位置信息和時(shí)間信息,包括在對(duì)采樣點(diǎn)響應(yīng)的事件進(jìn)行回調(diào)的方法中攜帶采樣點(diǎn)在觸屏上的坐標(biāo)和采樣點(diǎn)響應(yīng)事件時(shí)的系統(tǒng)時(shí)間。較佳地,根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),包括從第一個(gè)采樣點(diǎn)開(kāi)始,若相鄰兩個(gè)采樣點(diǎn)之間在用戶(hù)拖拽方向的坐標(biāo)差值是遞增的,則判斷出用戶(hù)的拖拽操作是加速滑動(dòng)。較佳地,利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度,包括取最后兩個(gè)采樣點(diǎn)在用戶(hù)拖拽方向的坐標(biāo)差值除以最后兩個(gè)采樣點(diǎn)的系統(tǒng)時(shí)間的差值,得到戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。較佳地,所述預(yù)設(shè)的加速拖拽事件包括在被操作界面UI類(lèi)所繼承的基類(lèi)Component里,添加的一個(gè)可重載方法 pointerSpeedDragged(int detaX, int detaY);其中,參數(shù)detaX表示每次該方法由UI繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕X軸方向上的偏移量,參數(shù)detaY表示每次該方法由UI繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕Y軸方向上的偏移量。較佳地,所述令被操作界面進(jìn)行一次減速包括預(yù)先設(shè)定一個(gè)減速因子decrease,利用UI繪制線(xiàn)程,對(duì)計(jì)算出的拖拽速度進(jìn)行減速運(yùn)算。較佳地,該方法進(jìn)一步包括在響應(yīng)一個(gè)按下事件時(shí),通過(guò)預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),當(dāng)計(jì)時(shí)器達(dá)到預(yù)設(shè)的閾值時(shí),未響應(yīng)拖拽事件和松開(kāi)事件,則判斷用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)預(yù)設(shè)的長(zhǎng)按事件。較佳地,所述預(yù)設(shè)的長(zhǎng)按事件包括自定義的方法ρ ointerLongPressed(int χ, int y),其中,參數(shù)χ表示長(zhǎng)按的響應(yīng)點(diǎn)位置的X軸坐標(biāo),參數(shù)1表示長(zhǎng)按的響應(yīng)點(diǎn)位置的1軸坐標(biāo)。一種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的裝置,該裝置包括采樣模塊,用于以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;速度計(jì)算模塊,用于若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;慣性模擬模塊,用于在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。較佳地,所述采樣模塊包括采樣單元,用于用戶(hù)的拖拽操作過(guò)程中,從響應(yīng)按下事件開(kāi)始,每隔一個(gè)預(yù)設(shè)的采樣時(shí)間間隔,響應(yīng)一個(gè)拖拽事件,直到響應(yīng)松開(kāi)事件為止,每一個(gè)響應(yīng)點(diǎn)為一個(gè)采樣點(diǎn)。信息單元,用于在對(duì)采樣點(diǎn)響應(yīng)的事件進(jìn)行回調(diào)的方法中攜帶采樣點(diǎn)在觸屏上的坐標(biāo)和采樣點(diǎn)響應(yīng)事件時(shí)的系統(tǒng)時(shí)間。較佳地,所述速度計(jì)算模塊包括判斷單元,用于從第一個(gè)采樣點(diǎn)開(kāi)始,若相鄰兩個(gè)采樣點(diǎn)之間在用戶(hù)拖拽方向的坐標(biāo)差值是遞增的,則判斷出用戶(hù)的拖拽操作是加速滑動(dòng)。計(jì)算單元,用于取最后兩個(gè)采樣點(diǎn)在用戶(hù)拖拽方向的坐標(biāo)差值除以最后兩個(gè)采樣點(diǎn)的系統(tǒng)時(shí)間的差值,得到戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。較佳地,該裝置進(jìn)一步包括長(zhǎng)按模塊,用于在響應(yīng)一個(gè)按下事件時(shí),通過(guò)預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),當(dāng)計(jì)時(shí)器達(dá)到預(yù)設(shè)的閾值時(shí),若未響應(yīng)拖拽事件和松開(kāi)事件,則判斷用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)預(yù)設(shè)的長(zhǎng)按事件。由上述的技術(shù)方案可見(jiàn),本發(fā)明的這種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法和裝置,充分利用現(xiàn)有J2ME平臺(tái)的功能,通過(guò)自定義的簡(jiǎn)單事件實(shí)現(xiàn)了加速滑動(dòng)和長(zhǎng)按的觸控效果,彌補(bǔ)了現(xiàn)有J2ME平臺(tái)對(duì)觸控操作支持上的不足,使J2ME平臺(tái)也可以給與用戶(hù)很好的觸控操作體驗(yàn)。
圖1為本發(fā)明實(shí)施例在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法流程圖;圖2為本發(fā)明實(shí)施例加速滑動(dòng)效果實(shí)現(xiàn)原理示意圖;圖3為本發(fā)明實(shí)施例在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的裝置結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例采樣模塊結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例速度計(jì)算模塊結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明主要是利用J2ME平臺(tái)上已定義的回調(diào)事件,按照每隔一定的時(shí)間間隔響應(yīng)一個(gè)拖拽事件的方式對(duì)用戶(hù)在觸屏上的拖拽操作進(jìn)行采樣,作為采樣點(diǎn),并獲得采樣點(diǎn)的位置信息和時(shí)間信息,根據(jù)這些采樣點(diǎn)的位置信息和時(shí)間信息之間的關(guān)系,判斷出用戶(hù)的操作是否為加速滑動(dòng),如果是,則利用采樣點(diǎn)的位置信息和時(shí)間信息計(jì)算出用戶(hù)松手時(shí)的拖拽速度,并每隔一定的時(shí)間間隔對(duì)這個(gè)拖拽速度進(jìn)行一次減速操作,用多次逐漸減速的普通拖拽操作模擬出加速滑動(dòng)的慣性滑動(dòng),實(shí)現(xiàn)加速滑動(dòng)的觸控效果。具體方法如圖1所示,包括如下步驟步驟101,以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置
6信息和時(shí)間信息?,F(xiàn)有J2ME 定義的標(biāo)準(zhǔn) API 里,在 javax. microedition. lcdui. Canvas 類(lèi)定義了三個(gè)回調(diào)事件,分別是Protected void pointerPressed (int χ, int y),M^t 響應(yīng)一個(gè)按下事件,其中含有響應(yīng)點(diǎn)的位置信息,即坐標(biāo)(X,y)。Protected void pointerReleased (int χ, int y) ;^fevJfMM W, ^ 統(tǒng)響應(yīng)一個(gè)松開(kāi)事件,其中含有響應(yīng)點(diǎn)的位置信息,即坐標(biāo)(X,y)。拖拽事件,Protected void pointerDragged (int χ, int y);若按下角蟲(chóng)屏并且在觸屏上滑動(dòng)時(shí),系統(tǒng)每隔一定的時(shí)間間隔響應(yīng)一個(gè)拖拽事件,其中含有響應(yīng)點(diǎn)的位置信息, 即坐標(biāo)(x,y)。對(duì)于短按操作,現(xiàn)有J2ME平臺(tái)會(huì)響應(yīng)一個(gè)按下事件和一個(gè)松開(kāi)事件;對(duì)于拖拽操作,則響應(yīng)一個(gè)按下事件、若干個(gè)拖拽事件和一個(gè)松開(kāi)事件。本步驟實(shí)際上就是在用戶(hù)進(jìn)行拖拽操作的過(guò)程中,利用現(xiàn)有J2ME平臺(tái)對(duì)于上述回調(diào)事件的響應(yīng)方式,在對(duì)回調(diào)事件進(jìn)行響應(yīng)時(shí)獲取響應(yīng)點(diǎn),即采樣點(diǎn)的位置信息和時(shí)間信息。位置信息可以是采樣點(diǎn)在觸屏上的坐標(biāo),而時(shí)間信息則可以是在采樣點(diǎn)響應(yīng)回調(diào)事件的當(dāng)前系統(tǒng)時(shí)間,采樣點(diǎn)的坐標(biāo)利用現(xiàn)有的回調(diào)事件即可取得,而在采樣點(diǎn)響應(yīng)回調(diào)事件的當(dāng)前時(shí)間則可以通過(guò)J2ME平臺(tái)提供的應(yīng)用程序接口(API)獲取。具體采樣的過(guò)程如圖2所示,圖2中的圈1的位置是用戶(hù)按壓觸屏的起始位置,之后用戶(hù)按照一定的方向進(jìn)行拖拽,最后在圈4的位置處松手,結(jié)束拖拽操作,其中圈2和圈3 的位置是在圈1位置響應(yīng)按下事件后,按照一定的時(shí)間間隔,響應(yīng)拖拽事件的位置,圈4位置則是響應(yīng)松開(kāi)事件的位置。本步驟中的采樣是以一定的時(shí)間間隔進(jìn)行的,當(dāng)用戶(hù)的拖拽操作開(kāi)始,即從圈1 處開(kāi)始,采樣過(guò)程即以一定時(shí)間間隔開(kāi)始,經(jīng)過(guò)兩個(gè)采樣時(shí)間間隔即圈2、圈3,在下一次采樣時(shí)間到來(lái)之前,若用戶(hù)拖拽操作結(jié)束,即圈4,采樣就不再進(jìn)行了,這一過(guò)程共得到4個(gè)采樣點(diǎn)的位置信息和時(shí)間信息。采樣的時(shí)間間隔決定采樣的次數(shù),其具體數(shù)值可以根據(jù)需要而定,例如根據(jù)虛擬機(jī)的性能、J2ME平臺(tái)手機(jī)的硬件性能確定,性能高的可以以較短的時(shí)間間隔采樣,從而增加采樣的次數(shù),提高后續(xù)步驟中計(jì)算滑動(dòng)速度時(shí)的準(zhǔn)確性,性能不佳的, 則可以犧牲后續(xù)步驟中計(jì)算滑動(dòng)速度時(shí)的準(zhǔn)確性,以較長(zhǎng)的時(shí)間間隔采樣,減少采樣的次數(shù),以適應(yīng)手機(jī)硬件或虛擬機(jī)的處理能力。步驟102,若根據(jù)獲得的位置信息和時(shí)間信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng), 則利用獲得的位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。加速滑動(dòng)操作的判斷原理獲得了用戶(hù)拖拽操作從開(kāi)始到松手之間的多個(gè)采樣點(diǎn)的位置信息和時(shí)間信息后,即可根據(jù)這些信息判斷出用戶(hù)的操作是否為加速滑動(dòng),因?yàn)椴蓸狱c(diǎn)之間是以相同的時(shí)間間隔進(jìn)行的,因此可以計(jì)算相鄰采樣點(diǎn)之間的位置差值大小,如果從用戶(hù)拖拽操作開(kāi)始到松手之間,相鄰采樣點(diǎn)之間的位置差值是遞增的,則可以判斷出用戶(hù)的拖拽操作是加速進(jìn)行的,如果差值是遞減的,則可以判斷出用戶(hù)的拖拽操作是減速進(jìn)行的;并且遞增的越快,說(shuō)明加速度越大,遞減的越快,減速度也越大。具體判斷時(shí),如果計(jì)算出相鄰采樣點(diǎn)之間的距離是遞增關(guān)系,則判斷為加速滑動(dòng)操作,其它情況都判斷為普通的拖拽操作。以圖2為例,從圈1處開(kāi)始,到圈4處松開(kāi)結(jié)束,整個(gè)過(guò)程,虛擬機(jī)響應(yīng)了 4個(gè)事件,獲得4個(gè)采樣點(diǎn)的位置信息和時(shí)間信息,圈1的位置信息和時(shí)間信息由pointerPressed(int x, int y)方法的響應(yīng)獲取,圈2和圈3的位置信息和時(shí)間信息由pointerDraggecKint x, int y)方法的響應(yīng)獲取,圈4的位置信息和時(shí)間信息由pointerReleasecKint x, int y)方法的響應(yīng)獲取,分別計(jì)算圈1與圈2、圈2與圈3, 圈3與圈4這些位置的坐標(biāo)之間的距離A、B、C,因?yàn)镃大于B,B大于A,因此可以判斷出用戶(hù)拖拽的操作是一個(gè)加速拖拽的操作。如果判斷為加速拖拽操作,則還要繼續(xù)根據(jù)采樣點(diǎn)的位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r相對(duì)觸屏的滑動(dòng)速度,否則按照現(xiàn)有處理方法進(jìn)行處理,這里不再贅述。計(jì)算滑動(dòng)速度的具體方法可以為取最后2次采樣點(diǎn)的位置信息和時(shí)間信息,計(jì)算在滑動(dòng)方向上最后2次采樣點(diǎn)的位置差,再除以這最后2個(gè)采樣點(diǎn)的時(shí)間差即可。還以圖2為例,取圈3和圈4兩個(gè)采樣點(diǎn)的坐標(biāo)和時(shí)間,用圈3與圈4之間的距離C除以圈3與圈4的時(shí)間差即可。步驟103,在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。在用戶(hù)手后,即響應(yīng)松開(kāi)事件后,并不立即停止界面的滑動(dòng),而是控制被操作的界面以滑動(dòng)速度為初速度繼續(xù)滑動(dòng),并每隔一定的時(shí)間間隔響應(yīng)一次預(yù)設(shè)的加速拖拽事件, 由該加速拖拽事件通過(guò)預(yù)設(shè)的減速因子對(duì)計(jì)算出的滑動(dòng)速度進(jìn)行減速,使被操作的界面逐漸停止滑動(dòng)。其中,現(xiàn)有UI繪制線(xiàn)程是通過(guò)繼承J2ME平臺(tái)底層的Canvas繪制類(lèi),實(shí)現(xiàn)對(duì)現(xiàn)有的 3 個(gè)米樣回調(diào)方法(pointerPressed (int x, int y)、p ointerReleased (int χ, int y)、p ointerDragged(int χ, int y)的實(shí)現(xiàn),因此本發(fā)明可以通過(guò)面象對(duì)象的編程思想把預(yù)設(shè)的加速拖拽事件封裝在UI繪制線(xiàn)程里面,通過(guò)定時(shí)重載該事件實(shí)現(xiàn)加速滑動(dòng)效果。具體地,可以在所有界面類(lèi)所共同繼承的基類(lèi)Component里面,添加一個(gè)可重載方法 pointerSpeedDragged (int detaX, int detaY),參數(shù) detaX 表示每次該方法由 UI 繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕X軸方向上的偏移量,參數(shù)detaY表示每次該方法由UI繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕Y軸方向上的偏移量,這2個(gè)數(shù)值由UI繪制線(xiàn)程在響應(yīng)該方法進(jìn)行回調(diào)時(shí)提供。UI繪制線(xiàn)程定期響應(yīng)一次pointerSpeedDragged事件,由UI層界面對(duì) pointerSpeedDragged事件進(jìn)行實(shí)現(xiàn),把界面的起始繪制點(diǎn)坐標(biāo)加上這些X,Y方向上的偏移量后刷新屏幕繪制,即可顯示出松手后繼續(xù)滑動(dòng)的動(dòng)畫(huà)效果。具體地,detaX和detaY在UI繪制線(xiàn)程里的計(jì)算方法如下根據(jù)最后2次響應(yīng)的采樣點(diǎn)的采樣坐標(biāo)和時(shí)間,計(jì)算出拖拽操作結(jié)束時(shí)滑動(dòng)方向上的拖拽速度SPEED (speedX, speedY),滑動(dòng)操作的力度越大,這個(gè)速度越大。以圖2為例,即取松手時(shí)的圈4的坐標(biāo)和最近一次采樣的圈3的坐標(biāo),計(jì)算滑動(dòng)方向上的坐標(biāo)差值,再除以這2個(gè)采樣點(diǎn)的時(shí)間差,即可得到拖拽速度SPEED。另外,還需要預(yù)先設(shè)定一個(gè)減速因子decrease,利用UI繪制線(xiàn)程, 定時(shí)(time)對(duì)計(jì)算出的拖拽速度SPEED進(jìn)行減速運(yùn)算,例如偽代碼可以如下所示Public void run() {While (true) {Sleep (time) -J/ 每隔 time 的時(shí)間If (SPEED > 0) {// 如果存在速度
8
SPEED- = decrease -J/ 速度降低分解x,y方向上的速度;detaX = speedX氺time ;//x 方向的偏移量detaY = speedY氺time ;//y 方向的偏移量Component. pointerSpeedPraRRed (detaX, QetaY) ;// 回調(diào)}}}當(dāng)然,具體的減速因子可以根據(jù)需要自由設(shè)定,如果需要表現(xiàn)比較大的滑動(dòng)阻尼, 則減速因子可以設(shè)置的比較大,反之則可以將減速因子設(shè)置較小。上述方法利用多次響應(yīng)J2ME定義的拖拽事件并對(duì)拖拽事件響應(yīng)時(shí)的位置信息和時(shí)間信息完美解決了對(duì)加速拖拽的判斷,并在用戶(hù)松手后通過(guò)計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的拖拽速度,并通過(guò)預(yù)設(shè)的減速因子對(duì)這個(gè)拖拽速度進(jìn)行定時(shí)減速操作,模擬出了慣性滑動(dòng)的效果,實(shí)現(xiàn)了目前只在Android平臺(tái)和iPhone系統(tǒng)中實(shí)現(xiàn)的加速滑動(dòng)效果。另外,在實(shí)現(xiàn)了加速滑動(dòng)效果的基礎(chǔ)上,本發(fā)明還進(jìn)一步給出了長(zhǎng)按效果的實(shí)現(xiàn)方法,即設(shè)置一計(jì)時(shí)器,在產(chǎn)生一個(gè)按下事件時(shí),通預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),在產(chǎn)生松開(kāi)事件之前,若并且未產(chǎn)生一個(gè)拖拽事件,且計(jì)時(shí)器的計(jì)時(shí)達(dá)到預(yù)設(shè)的閾值時(shí),則判斷出用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)一個(gè)自定義的長(zhǎng)按事件,例如可以自定義一個(gè)方法 pointerLongPressed(int χ, int y),其中參數(shù)χ表示長(zhǎng)按的響應(yīng)位置的χ坐標(biāo),參數(shù)y表示長(zhǎng)按的響應(yīng)位置的y坐標(biāo),響應(yīng)長(zhǎng)按事件后,可以在長(zhǎng)按事件的響應(yīng)位置坐標(biāo)上進(jìn)行彈出菜單等自定義的交互操作。通過(guò)上述方法,可以對(duì)用戶(hù)的短按和長(zhǎng)按操作進(jìn)行區(qū)分,并根據(jù)不同的操作實(shí)現(xiàn)不同的后續(xù)動(dòng)作,實(shí)現(xiàn)了現(xiàn)有J2ME平臺(tái)中并不支持的長(zhǎng)按操作。本發(fā)明還提供了一種在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,如圖3所示,該裝置包括采樣模塊301,用于以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;速度計(jì)算模塊302,用于若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng), 則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;慣性模擬模塊303,用于在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。較佳地,如圖4所示,所述采樣模塊301包括采樣單元401,用于用戶(hù)的拖拽操作過(guò)程中,從響應(yīng)按下事件開(kāi)始,每隔一個(gè)預(yù)設(shè)的采樣時(shí)間間隔,響應(yīng)一個(gè)拖拽事件,直到響應(yīng)松開(kāi)事件為止,每一個(gè)響應(yīng)點(diǎn)為一個(gè)采樣
點(diǎn)ο信息單元402,用于在對(duì)采樣點(diǎn)響應(yīng)的事件進(jìn)行回調(diào)的方法中攜帶采樣點(diǎn)在觸屏上的坐標(biāo)和采樣點(diǎn)響應(yīng)事件時(shí)的系統(tǒng)時(shí)間。較佳地,如圖5所示,所述速度計(jì)算模塊302包括
判斷單元501,用于從第一個(gè)采樣點(diǎn)開(kāi)始,若相鄰兩個(gè)采樣點(diǎn)之間在用戶(hù)拖拽方向的坐標(biāo)差值是遞增的,則判斷出用戶(hù)的拖拽操作是加速滑動(dòng)。計(jì)算單元502,用于取最后兩個(gè)采樣點(diǎn)在用戶(hù)拖拽方向的坐標(biāo)差值除以最后兩個(gè)采樣點(diǎn)的系統(tǒng)時(shí)間的差值,得到戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。另外,若要實(shí)現(xiàn)長(zhǎng)按的判斷和響應(yīng),該裝置還可以進(jìn)一步包括長(zhǎng)按模塊,用于在響應(yīng)一個(gè)按下事件時(shí),通過(guò)預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),當(dāng)計(jì)時(shí)器達(dá)到預(yù)設(shè)的閾值時(shí),若未響應(yīng)拖拽事件和松開(kāi)事件,則判斷用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)預(yù)設(shè)的長(zhǎng)按事件。上述裝置可以實(shí)現(xiàn)本發(fā)明所述的加速滑動(dòng)操作的判斷和松手后的減速方案,其中各模塊中具體的功能實(shí)現(xiàn)可以參考方法實(shí)施例,這里不再詳述。由上述的實(shí)施例可見(jiàn),本發(fā)明的這種在J2ME平臺(tái)上實(shí)現(xiàn)加速滑動(dòng)效果的方法和裝置,充分利用現(xiàn)有J2ME平臺(tái)的功能,通過(guò)自定義的簡(jiǎn)單事件實(shí)現(xiàn)了加速滑動(dòng)和長(zhǎng)按的觸控效果,彌補(bǔ)了現(xiàn)有J2ME平臺(tái)對(duì)觸控操作支持上的不足,使J2ME平臺(tái)也可以給與用戶(hù)很好的觸控操作體驗(yàn)。
權(quán)利要求
1.一種在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,該方法包括以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。
2.如權(quán)利要求1所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,包括用戶(hù)的拖拽操作過(guò)程中,從響應(yīng)按下事件開(kāi)始,每隔一個(gè)預(yù)設(shè)的采樣時(shí)間間隔,響應(yīng)一個(gè)拖拽事件,直到響應(yīng)松開(kāi)事件為止,每一個(gè)響應(yīng)點(diǎn)為一個(gè)采樣點(diǎn)。
3.如權(quán)利要求1所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,所述得到采樣點(diǎn)的位置信息和時(shí)間信息,包括在對(duì)采樣點(diǎn)響應(yīng)的事件進(jìn)行回調(diào)的方法中攜帶采樣點(diǎn)在觸屏上的坐標(biāo)和采樣點(diǎn)響應(yīng)事件時(shí)的系統(tǒng)時(shí)間。
4.如權(quán)利要求3所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),包括從第一個(gè)采樣點(diǎn)開(kāi)始,若相鄰兩個(gè)采樣點(diǎn)之間在用戶(hù)拖拽方向的坐標(biāo)差值是遞增的, 則判斷出用戶(hù)的拖拽操作是加速滑動(dòng)。
5.如權(quán)利要求4所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度,包括取最后兩個(gè)采樣點(diǎn)在用戶(hù)拖拽方向的坐標(biāo)差值除以最后兩個(gè)采樣點(diǎn)的系統(tǒng)時(shí)間的差值,得到戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。
6.如權(quán)利要求1所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,所述預(yù)設(shè)的加速拖拽事件包括在被操作界面UI類(lèi)所繼承的基類(lèi)Component里,添加的一個(gè)可重載方法 pointerSpeedDragged(int detaX, int detaY);其中,參數(shù)detaX表示每次該方法由UI繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕X軸方向上的偏移量,參數(shù)detaY表示每次該方法由UI繪制線(xiàn)程進(jìn)行回調(diào)時(shí)在屏幕Y軸方向上的偏移量。
7.如權(quán)利要求1所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,所述令被操作界面進(jìn)行一次減速包括預(yù)先設(shè)定一個(gè)減速因子decrease,利用UI繪制線(xiàn)程,對(duì)計(jì)算出的拖拽速度進(jìn)行減速運(yùn)笪弁。
8.如權(quán)利要求2所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,該方法進(jìn)一步包括在響應(yīng)一個(gè)按下事件時(shí),通過(guò)預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),當(dāng)計(jì)時(shí)器達(dá)到預(yù)設(shè)的閾值時(shí), 未響應(yīng)拖拽事件和松開(kāi)事件,則判斷用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)預(yù)設(shè)的長(zhǎng)按事件。
9.如權(quán)利要求8所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,其特征在于,所述預(yù)設(shè)的長(zhǎng)按事件包括自定義的方法P ointerLongPressed(int χ, int y),其中,參數(shù)χ表示長(zhǎng)按的響應(yīng)點(diǎn)位置的χ軸坐標(biāo),參數(shù)y表示長(zhǎng)按的響應(yīng)點(diǎn)位置的y軸坐標(biāo)。
10.一種在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,其特征在于,該裝置包括采樣模塊,用于以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;速度計(jì)算模塊,用于若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;慣性模擬模塊,用于在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。
11.如權(quán)利要求10所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,其特征在于,所述采樣模塊包括采樣單元,用于用戶(hù)的拖拽操作過(guò)程中,從響應(yīng)按下事件開(kāi)始,每隔一個(gè)預(yù)設(shè)的采樣時(shí)間間隔,響應(yīng)一個(gè)拖拽事件,直到響應(yīng)松開(kāi)事件為止,每一個(gè)響應(yīng)點(diǎn)為一個(gè)采樣點(diǎn)。信息單元,用于在對(duì)采樣點(diǎn)響應(yīng)的事件進(jìn)行回調(diào)的方法中攜帶采樣點(diǎn)在觸屏上的坐標(biāo)和采樣點(diǎn)響應(yīng)事件時(shí)的系統(tǒng)時(shí)間。
12.如權(quán)利要求10所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,其特征在于,所述速度計(jì)算模塊包括判斷單元,用于從第一個(gè)采樣點(diǎn)開(kāi)始,若相鄰兩個(gè)采樣點(diǎn)之間在用戶(hù)拖拽方向的坐標(biāo)差值是遞增的,則判斷出用戶(hù)的拖拽操作是加速滑動(dòng)。計(jì)算單元,用于取最后兩個(gè)采樣點(diǎn)在用戶(hù)拖拽方向的坐標(biāo)差值除以最后兩個(gè)采樣點(diǎn)的系統(tǒng)時(shí)間的差值,得到戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度。
13.如權(quán)利要求10所述的在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,其特征在于,該裝置進(jìn)一步包括長(zhǎng)按模塊,用于在響應(yīng)一個(gè)按下事件時(shí),通過(guò)預(yù)設(shè)的計(jì)時(shí)器進(jìn)行計(jì)時(shí),當(dāng)計(jì)時(shí)器達(dá)到預(yù)設(shè)的閾值時(shí),若未響應(yīng)拖拽事件和松開(kāi)事件,則判斷用戶(hù)進(jìn)行的是長(zhǎng)按操作,響應(yīng)預(yù)設(shè)的長(zhǎng)按事件。
全文摘要
本發(fā)明公開(kāi)了一種在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的方法,該方法包括以預(yù)定的采樣時(shí)間間隔對(duì)用戶(hù)的拖拽操作進(jìn)行采樣,得到采樣點(diǎn)的位置信息和時(shí)間信息;若根據(jù)所述位置信息判斷出用戶(hù)的拖拽操作是加速滑動(dòng),則利用所述位置信息和時(shí)間信息計(jì)算用戶(hù)松開(kāi)觸屏?xí)r的滑動(dòng)速度;在用戶(hù)松開(kāi)觸屏后,每隔預(yù)設(shè)的響應(yīng)時(shí)間間隔響應(yīng)一個(gè)預(yù)設(shè)的加速拖拽事件,每響應(yīng)一次加速拖拽事件,令被操作界面進(jìn)行一次減速,使被操作界面以計(jì)算出的滑動(dòng)速度開(kāi)始逐漸停止滑動(dòng)。本發(fā)明還公開(kāi)了一種在J2ME平臺(tái)實(shí)現(xiàn)加速滑動(dòng)的裝置,該方法和該裝置能夠?qū)崿F(xiàn)現(xiàn)有J2ME平臺(tái)不能實(shí)現(xiàn)的加速滑動(dòng)效果。
文檔編號(hào)G06F3/041GK102486693SQ20101058074
公開(kāi)日2012年6月6日 申請(qǐng)日期2010年12月6日 優(yōu)先權(quán)日2010年12月6日
發(fā)明者林聲煒, 羅根, 黃良明 申請(qǐng)人:騰訊科技(深圳)有限公司