專利名稱:屏幕旋轉(zhuǎn)時(shí)java應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)設(shè)備應(yīng)用領(lǐng)域,尤其涉及的是一種屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界 面跟隨旋轉(zhuǎn)的方法。
背景技術(shù):
為了提供更加豐富的用戶體驗(yàn),適應(yīng)不同的使用習(xí)慣,越來(lái)越多的移動(dòng)設(shè)備支持 屏幕旋轉(zhuǎn),比如通過(guò)滑蓋或G-sensor或其它方式觸發(fā),從而使用戶能夠根據(jù)自己的喜好隨 時(shí)切換橫屏顯示或者豎屏顯示。屏幕旋轉(zhuǎn)被觸發(fā)的時(shí)候,移動(dòng)設(shè)備中使用操作平臺(tái)語(yǔ)言開(kāi)發(fā)的本地應(yīng)用程序能夠 直接收到該觸發(fā)事件,從而實(shí)現(xiàn)其應(yīng)用程序界面的跟隨旋轉(zhuǎn),但是移動(dòng)設(shè)備中的JAVA應(yīng)用 程序,由于JAVA規(guī)范中并沒(méi)有針對(duì)屏幕旋轉(zhuǎn)事件的接口定義,絕大多數(shù)JAVA應(yīng)用程序只針 對(duì)固定的屏幕尺寸設(shè)計(jì),或者只在啟動(dòng)時(shí)從系統(tǒng)讀取一次當(dāng)前的屏幕尺寸(高/寬)然后一 直按照該尺寸進(jìn)行顯示,顯示界面并不能跟隨移動(dòng)設(shè)備屏幕旋轉(zhuǎn)而旋轉(zhuǎn)。JAVA技術(shù)是一個(gè)高度標(biāo)準(zhǔn)化的技術(shù)。通常情況下,任何沒(méi)有被納入標(biāo)準(zhǔn)的功能無(wú) 法被JAVA應(yīng)用程序創(chuàng)造性實(shí)現(xiàn),否則該JAVA應(yīng)用程序難以在不同系統(tǒng)間自由適應(yīng),也即跨 平臺(tái)運(yùn)行。但在標(biāo)準(zhǔn)化技術(shù)滯后的情況下,一些新出現(xiàn)的應(yīng)用需求必然導(dǎo)致對(duì)現(xiàn)有功能的 擴(kuò)展或復(fù)用。因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,旨 在解決現(xiàn)有移動(dòng)設(shè)備中的JAVA應(yīng)用程序,由于JAVA規(guī)范中并沒(méi)有針對(duì)屏幕旋轉(zhuǎn)事件的接 口定義,從而不能實(shí)現(xiàn)其應(yīng)用程序界面跟隨屏幕旋轉(zhuǎn)而旋轉(zhuǎn)的問(wèn)題。本發(fā)明的技術(shù)方案如下一種屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其 包括以下步驟
SlOO 處理器檢測(cè)到移動(dòng)設(shè)備狀態(tài)發(fā)生改變觸發(fā)屏幕進(jìn)行旋轉(zhuǎn); S200 底層應(yīng)用程序?qū)⑵聊恍D(zhuǎn)事件發(fā)送給平臺(tái)應(yīng)用層;
S300 平臺(tái)應(yīng)用層控制本地應(yīng)用程序?qū)崿F(xiàn)與顯示界面的跟隨旋轉(zhuǎn),并通過(guò)JAVA適配層 將屏幕旋轉(zhuǎn)事件發(fā)送給JAVA內(nèi)核;
S400 JAVA內(nèi)核修改屏幕尺寸參數(shù);
S500 JAVA內(nèi)核調(diào)用JAVA應(yīng)用程序的移動(dòng)設(shè)備屏幕尺寸更改接口 ; S600 JAVA應(yīng)用程序在移動(dòng)設(shè)備屏幕尺寸更改函數(shù)中讀取新的屏幕尺寸參數(shù)并據(jù)此 刷新界面顯示。所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其中,觸發(fā)屏幕進(jìn)行旋轉(zhuǎn) 的方式包括滑蓋狀態(tài)改變或者通過(guò)傳感器檢測(cè)移動(dòng)設(shè)備方向發(fā)生變化。所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其中,所述JAVA應(yīng)用程序包括全屏顯示的應(yīng)用程序和非全屏顯示的應(yīng)用程序。所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其中,對(duì)于全屏顯示的 JAVA應(yīng)用程序,所述JAVA內(nèi)核修改屏幕尺寸參數(shù)的具體方法為交換屏幕高和寬像素值, 將旋轉(zhuǎn)前的屏幕高度像素值設(shè)置為旋轉(zhuǎn)后的屏幕寬度像素值,同時(shí)將旋轉(zhuǎn)前的屏幕寬度像 素值設(shè)置為旋轉(zhuǎn)后的屏幕高度像素值。所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其中,對(duì)于非全屏顯示的 JAVA應(yīng)用程序,所述JAVA內(nèi)核修改屏幕尺寸參數(shù)的具體方法為計(jì)算狀態(tài)條和軟鍵條所占 區(qū)域的像素值,將旋轉(zhuǎn)前的屏幕高度像素值加上旋轉(zhuǎn)前的狀態(tài)條高度像素值加上旋轉(zhuǎn)前的 軟鍵條高度像素值得到旋轉(zhuǎn)后的屏幕寬度像素值,同時(shí)將旋轉(zhuǎn)前的屏幕寬度像素值減去旋 轉(zhuǎn)后的狀態(tài)條高度像素值減去旋轉(zhuǎn)后的軟鍵條高度像素值得到旋轉(zhuǎn)后的屏幕高度像素值。本發(fā)明的有益效果本發(fā)明提供一種復(fù)用JAVA基本規(guī)范中定義的一個(gè)標(biāo)準(zhǔn)接口 Displayable. sizeChanged (屏幕尺寸更改接口)來(lái)傳遞屏幕旋轉(zhuǎn)事件,從而以最小的開(kāi)發(fā) 工作量實(shí)現(xiàn)移動(dòng)設(shè)備屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的技術(shù)方法,使得可旋轉(zhuǎn)屏 幕的移動(dòng)設(shè)備擁有更完整的用戶體驗(yàn)提升。
圖1是JAVA技術(shù)平臺(tái)的結(jié)構(gòu)示意圖。圖2是本發(fā)明提供的方法的流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對(duì) 本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。如圖1所示,JAVA技術(shù)是一個(gè)跨平臺(tái)的軟件技術(shù)。符合J2ME規(guī)范的JAVA應(yīng)用程 序(MIDlet)可以在不同的硬件設(shè)備上經(jīng)過(guò)簡(jiǎn)單的調(diào)整和適配(甚至完全不需要調(diào)整)而運(yùn) 行,而不用考慮硬件設(shè)備平臺(tái)的處理器及操作系統(tǒng)細(xì)節(jié)。JAVA本身的跨平臺(tái)特性依賴于其抽象的應(yīng)用程序運(yùn)行環(huán)境也即JAVA虛擬機(jī)。實(shí) 現(xiàn)JAVA虛擬機(jī)的核心部分功能通常被稱為JAVA內(nèi)核(Core),或者也簡(jiǎn)單的稱為JVM。不同的JAVA應(yīng)用程序運(yùn)行在同一個(gè)硬件設(shè)備上時(shí)需要對(duì)其資源和記錄信息的管 理,這部分功能通常稱為JAVA應(yīng)用程序管理器(簡(jiǎn)稱為JAM),或稱為JAVA應(yīng)用管理層,可以 看作JAVA虛擬機(jī)的一部分,也可以看作JAVA內(nèi)核之上的一個(gè)基礎(chǔ)的應(yīng)用層。為了將JAVA技術(shù)的整體運(yùn)行于另一個(gè)實(shí)體軟硬件平臺(tái)上,需要一些嫁接和適配 的工作。與此相關(guān)的所有軟件硬件配合部分通常被稱為JAVA的適配及JAVA適配層。運(yùn)行在JAVA適配層之下的就是系統(tǒng)平臺(tái),以及一些底層應(yīng)用程序。其他更高層 的應(yīng)用也可能與JAVA系統(tǒng)和JAVA應(yīng)用程序發(fā)生通信等操作,但往往不能直接通信,而是通 過(guò)JAVA適配層和JAVA內(nèi)核和JAM的幫助。參見(jiàn)圖2,本發(fā)明提供移動(dòng)設(shè)備屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法流 程包括以下步驟
步驟SlOO 處理器檢測(cè)到移動(dòng)設(shè)備狀態(tài)發(fā)生改變觸發(fā)屏幕進(jìn)行旋轉(zhuǎn)。步驟S200 底層應(yīng)用程序?qū)⑵聊恍D(zhuǎn)事件發(fā)送給平臺(tái)應(yīng)用層。
步驟S300 平臺(tái)應(yīng)用層控制本地應(yīng)用程序?qū)崿F(xiàn)與顯示界面的跟隨旋轉(zhuǎn),并通過(guò) JAVA適配層將屏幕旋轉(zhuǎn)事件發(fā)送給JAVA內(nèi)核。步驟S400 JAVA內(nèi)核修改屏幕尺寸參數(shù)。步驟S500 JAVA內(nèi)核調(diào)用JAVA應(yīng)用程序的移動(dòng)設(shè)備屏幕尺寸更改接口接口。步驟S600:JAVA應(yīng)用程序在移動(dòng)設(shè)備屏幕尺寸更改接口函數(shù)中讀取新的屏幕尺 寸參數(shù)并據(jù)此刷新界面顯示。其中,所述移動(dòng)設(shè)備以手機(jī)為例,但不限于手機(jī),其觸發(fā)屏幕進(jìn)行旋轉(zhuǎn)的事件包括 滑蓋狀態(tài)改變或者通過(guò)傳感器(G-sensor)檢測(cè)移動(dòng)設(shè)備方向發(fā)生變化或者其它機(jī)械/電 子方式。本發(fā)明提供的方法的詳細(xì)方案描述如下
首先是通過(guò)滑蓋狀態(tài)改變或者通過(guò)G-sensor檢測(cè)移動(dòng)設(shè)備方向發(fā)生變化或者通過(guò)其 它機(jī)械/電子方式觸發(fā)了屏幕旋轉(zhuǎn)事件,此時(shí)移動(dòng)設(shè)備的處理器檢測(cè)到移動(dòng)設(shè)備的屏幕旋 轉(zhuǎn)動(dòng)作。其通過(guò)底層應(yīng)用將屏幕旋轉(zhuǎn)事件發(fā)送給平臺(tái)應(yīng)用層,在這里,眾多平臺(tái)本地應(yīng)用程 序都會(huì)收到這個(gè)事件,并據(jù)此刷新當(dāng)前顯示界面(如果有的話)或者下一次顯示界面,從而 實(shí)現(xiàn)跟隨旋轉(zhuǎn)。傳統(tǒng)方案中到這里就處理結(jié)束了,在本技術(shù)方法提供的方案中,新增如下處理 平臺(tái)應(yīng)用層通過(guò)JAVA適配層,將屏幕旋轉(zhuǎn)事件發(fā)送給JAVA虛擬機(jī)的核心部分JAVA內(nèi)
核即JVM。平臺(tái)應(yīng)用層在事件定義文件中新增針對(duì)JAVA的屏幕旋轉(zhuǎn)事件定義,并將其傳遞 給JAVA適配層,所述JAVA適配層再傳遞給JVM。例如,定義為MSG_ID_MMI_JAVA_SCREEN_ R0TATI0N_IND。JVM修改其記錄的屏幕尺寸參數(shù),所述屏幕尺寸參數(shù)可以被JAVA應(yīng)用程序讀到。 由于有些JAVA程序使用全屏顯示,而有些JAVA程序使用非全屏顯示,因此對(duì)于非全屏顯示 的JAVA程序需扣除頂端的用來(lái)顯示時(shí)間/電量/網(wǎng)絡(luò)等圖標(biāo)的狀態(tài)條和底端的用來(lái)顯示 左右鍵功能字符串的軟鍵條的空間。所以這兩種情況都要考慮對(duì)于全屏顯示的情況,只 需要交換屏幕高/寬像素值,即將旋轉(zhuǎn)前的屏幕高度像素值設(shè)置為旋轉(zhuǎn)后的屏幕寬度像素 值,同時(shí)將旋轉(zhuǎn)前的屏幕寬度像素值設(shè)置為旋轉(zhuǎn)后的屏幕高度像素值;對(duì)于非全屏顯示的 情況,則需要重新計(jì)算加減狀態(tài)條和軟鍵條所占的區(qū)域,即將旋轉(zhuǎn)前的屏幕高度像素值加 上旋轉(zhuǎn)前的狀態(tài)條高度像素值加上旋轉(zhuǎn)前的軟鍵條高度像素值得到旋轉(zhuǎn)后的屏幕寬度像 素值,同時(shí)將旋轉(zhuǎn)前的屏幕寬度像素值減去旋轉(zhuǎn)后的狀態(tài)條高度像素值減去旋轉(zhuǎn)后的軟鍵 條高度像素值得到旋轉(zhuǎn)后的屏幕高度像素值。然后JVM 調(diào)用 JAVA 應(yīng)用程序的 Displayable. sizeChanged(包括 Canvas. sizeChanged),Displayable. sizeChanged (^llf舌 Canvas. sizeChanged) ^ JAVA
中定義的一個(gè)標(biāo)準(zhǔn)接口,主要用于JAVA應(yīng)用程序在切換全屏模式和非全屏模式時(shí)刷新顯 示界面,其具體內(nèi)容由JAVA應(yīng)用程序自己實(shí)現(xiàn),JVM無(wú)法統(tǒng)一控制,因此為了達(dá)到跟隨旋轉(zhuǎn) 的目標(biāo),最后對(duì)JAVA應(yīng)用程序做如下要求
JAVA應(yīng)用程序應(yīng)該在Displayable. sizeChanged函數(shù)中依次實(shí)現(xiàn)從JVM讀取新的屏 幕尺寸參數(shù);根據(jù)新的屏幕尺寸參數(shù),重新計(jì)算調(diào)整界面各顯示元素的大小位置,如果該應(yīng) 用程序最初設(shè)計(jì)成動(dòng)態(tài)顯示而非固定尺寸,這一步就更加容易實(shí)現(xiàn);最后JAVA應(yīng)用程序刷 新界面顯示,從而實(shí)現(xiàn)最終的跟隨旋轉(zhuǎn)效果。
本發(fā)明提供一種復(fù)用JAVA基本規(guī)范中定義的一個(gè)標(biāo)準(zhǔn)接口 Displayable. sizeChanged來(lái)傳遞屏幕旋轉(zhuǎn)事件,從而以最小的開(kāi)發(fā)工作量實(shí)現(xiàn)移動(dòng)設(shè)備屏幕旋轉(zhuǎn)時(shí) JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的技術(shù)方法,使得可旋轉(zhuǎn)屏幕的移動(dòng)設(shè)備擁有更完整的用戶體 驗(yàn)提升。應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可 以根據(jù)上述說(shuō)明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保 護(hù)范圍。
權(quán)利要求
1.一種屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其特征在于,包括以下步驟SlOO 處理器檢測(cè)到移動(dòng)設(shè)備狀態(tài)發(fā)生改變觸發(fā)屏幕進(jìn)行旋轉(zhuǎn);S200 底層應(yīng)用程序?qū)⑵聊恍D(zhuǎn)事件發(fā)送給平臺(tái)應(yīng)用層;S300 平臺(tái)應(yīng)用層控制本地應(yīng)用程序?qū)崿F(xiàn)與顯示界面的跟隨旋轉(zhuǎn),并通過(guò)JAVA適配層 將屏幕旋轉(zhuǎn)事件發(fā)送給JAVA內(nèi)核;S400 JAVA內(nèi)核修改屏幕尺寸參數(shù);S500 JAVA內(nèi)核調(diào)用JAVA應(yīng)用程序的移動(dòng)設(shè)備屏幕尺寸更改接口 ;S600 JAVA應(yīng)用程序在移動(dòng)設(shè)備屏幕尺寸更改函數(shù)中讀取新的屏幕尺寸參數(shù)并據(jù)此 刷新界面顯示。
2.根據(jù)權(quán)利要求1所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其特征在 于,觸發(fā)屏幕進(jìn)行旋轉(zhuǎn)的方式包括滑蓋狀態(tài)改變或者通過(guò)傳感器檢測(cè)移動(dòng)設(shè)備方向發(fā)生變化。
3.根據(jù)權(quán)利要求1所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其特征在 于,所述JAVA應(yīng)用程序包括全屏顯示的應(yīng)用程序和非全屏顯示的應(yīng)用程序。
4.根據(jù)權(quán)利要求3所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其特征在 于,對(duì)于全屏顯示的JAVA應(yīng)用程序,所述JAVA內(nèi)核修改屏幕尺寸參數(shù)的具體方法為交換 屏幕高和寬像素值,將旋轉(zhuǎn)前的屏幕高度像素值設(shè)置為旋轉(zhuǎn)后的屏幕寬度像素值,同時(shí)將 旋轉(zhuǎn)前的屏幕寬度像素值設(shè)置為旋轉(zhuǎn)后的屏幕高度像素值。
5.根據(jù)權(quán)利要求3所述的屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,其特征在 于,對(duì)于非全屏顯示的JAVA應(yīng)用程序,所述JAVA內(nèi)核修改屏幕尺寸參數(shù)的具體方法為計(jì) 算狀態(tài)條和軟鍵條所占區(qū)域的像素值,將旋轉(zhuǎn)前的屏幕高度像素值加上旋轉(zhuǎn)前的狀態(tài)條高 度像素值加上旋轉(zhuǎn)前的軟鍵條高度像素值得到旋轉(zhuǎn)后的屏幕寬度像素值,同時(shí)將旋轉(zhuǎn)前的 屏幕寬度像素值減去旋轉(zhuǎn)后的狀態(tài)條高度像素值減去旋轉(zhuǎn)后的軟鍵條高度像素值得到旋 轉(zhuǎn)后的屏幕高度像素值。
全文摘要
本發(fā)明公開(kāi)了一種屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的方法,包括以下步驟處理器檢測(cè)到移動(dòng)設(shè)備狀態(tài)發(fā)生改變觸發(fā)屏幕進(jìn)行旋轉(zhuǎn);底層應(yīng)用程序?qū)⑵聊恍D(zhuǎn)事件發(fā)送給平臺(tái)應(yīng)用層;平臺(tái)應(yīng)用層控制本地應(yīng)用程序?qū)崿F(xiàn)與顯示界面的跟隨旋轉(zhuǎn),并通過(guò)JAVA適配層將屏幕旋轉(zhuǎn)事件發(fā)送給JAVA內(nèi)核;JAVA內(nèi)核修改屏幕尺寸參數(shù);JAVA內(nèi)核調(diào)用JAVA應(yīng)用程序的移動(dòng)設(shè)備屏幕尺寸更改接口;JAVA應(yīng)用程序在移動(dòng)設(shè)備屏幕尺寸更改函數(shù)中讀取新的屏幕尺寸參數(shù)并據(jù)此刷新界面顯示。本發(fā)明以最小的開(kāi)發(fā)工作量實(shí)現(xiàn)移動(dòng)設(shè)備屏幕旋轉(zhuǎn)時(shí)JAVA應(yīng)用程序界面跟隨旋轉(zhuǎn)的技術(shù)方法,使得可旋轉(zhuǎn)屏幕的移動(dòng)設(shè)備擁有更完整的用戶體驗(yàn)提升。
文檔編號(hào)G06F9/44GK102109959SQ20111005383
公開(kāi)日2011年6月29日 申請(qǐng)日期2011年3月7日 優(yōu)先權(quán)日2011年3月7日
發(fā)明者楊彬 申請(qǐng)人:惠州Tcl移動(dòng)通信有限公司