J2ME編程 橫豎屏切換知識(shí)總結(jié)
隨著手機(jī)的功能越來(lái)越豐富,支持橫豎屏切換的手機(jī)越來(lái)越多,在手機(jī)軟件開(kāi)發(fā)中也必須要處理這個(gè)功能了。下面對(duì)于使用J2ME技術(shù)進(jìn)行編程時(shí)對(duì)于橫豎屏(轉(zhuǎn)屏)切換時(shí)的相關(guān)知識(shí)進(jìn)行一下小結(jié)。
1、如何判斷橫豎屏切換
橫豎屏切換由手機(jī)系統(tǒng)自動(dòng)完成的,在J2ME中只能檢測(cè)到這種變換,判斷橫豎屏切換的方法有2種:
A)線程中每次檢測(cè)法(輪詢方式)
這種方式是在程序的線程中每隔一定的時(shí)間間隔,就獲得一次屏幕的寬度和高度,然后判斷寬度和高度是否變化,如果寬度和高度和已有的寬度和高度相比發(fā)生了變化,至于是變化成橫屏還是豎屏則只需要比較寬高就可以實(shí)現(xiàn)。在判斷到橫豎屏切換時(shí),執(zhí)行邏輯代碼即可。
使用這種方式由于每次線程循環(huán)都需要檢測(cè),所以執(zhí)行效率不高,但是由于一些轉(zhuǎn)屏手機(jī)不支持sizeChanged的方法回調(diào),所以使用這種方式的通用性是最高的,是經(jīng)常被使用的方法。
B)sizeChanged法(中斷方式)
這種方式是指如果轉(zhuǎn)屏手機(jī)對(duì)于MIDP支持比較規(guī)范,則當(dāng)橫豎屏切換時(shí)會(huì)自動(dòng)調(diào)用Canvas類中的sizeChanged方法,這樣就需要在Canvas的子類中覆蓋該方法即可,在該方法內(nèi)部書寫橫豎屏切換的邏輯處理代碼即可。
使用這種方式由于是系統(tǒng)自動(dòng)調(diào)用,所以執(zhí)行效率很好,但是由于部分手機(jī)實(shí)現(xiàn)的不規(guī)范,所以通用性沒(méi)有第一種方式高。
說(shuō)明:高級(jí)用戶界面自動(dòng)切換,不需要書寫處理的代碼。
2、如何處理橫豎屏切換
在檢測(cè)到橫豎屏切換以后,就需要對(duì)于橫豎屏切換進(jìn)行處理了,處理的方式一般有也有兩種:
A)簡(jiǎn)單提示法
這種處理方式時(shí)指只實(shí)現(xiàn)一種屏幕模式下的邏輯,而在另外一種屏幕方式下顯示提示。例如只實(shí)現(xiàn)豎屏模式的界面,在橫屏模式下,只出現(xiàn)提示:“請(qǐng)?jiān)谪Q屏模式下使用本程序”。
使用這種方式程序?qū)崿F(xiàn)比較簡(jiǎn)單,只需要實(shí)現(xiàn)一套界面即可,適合于比較簡(jiǎn)單的程序。
B)實(shí)現(xiàn)兩套UI法
這種處理方式時(shí)指在一個(gè)程序中實(shí)現(xiàn)兩套界面:一套橫屏一套豎屏??梢栽诔绦蛑性O(shè)置一個(gè)screenType的參數(shù),在每個(gè)節(jié)目的繪制方法中根據(jù)該參數(shù)判斷是橫屏還是豎屏,然后執(zhí)行不同的繪制代碼即可。
使用這種方式程序?qū)崿F(xiàn)比較友好,但是程序開(kāi)發(fā)和測(cè)試的工作量都要稍微大一點(diǎn),而且橫豎屏切換時(shí)數(shù)據(jù)的變換也比較麻煩。
3、其它說(shuō)明
在實(shí)現(xiàn)橫豎屏切換時(shí),有些知識(shí)會(huì)幫助你實(shí)現(xiàn)一些很實(shí)用的功能:
在Nokia手機(jī)上禁止橫豎屏切換:
在S60 5th 及以上版本中,可以通過(guò)在jad或manifest文件中通過(guò)指定如下屬性來(lái)指定程序運(yùn)行時(shí)的屏幕類型:
豎屏:Nokia-MIDlet-App-Orientation:portrait
橫屏:Nokia-MIDlet-App-Orientation:landscape
不足之處希望大家積極指正、交流和完善!
原文地址:http://blog.csdn.net/Mailbomb/archive/2010/07/18/5743942.aspx
【編輯推薦】