隨著手機的功能越來越豐富,支持橫豎屏切換的手機越來越多,在手機軟件開發中也必須要處理這個功能了。下面對於使用J2ME技術進行編程時對於橫豎屏(轉屏)切換時的相關知識進行一下小結。
1、如何判斷橫豎屏切換
橫豎屏切換由手機系統自動完成的,在J2ME中只能檢測到這種變換,判斷橫豎屏切換的方法有2種:
A)線程中每次檢測法(輪詢方式)
這種方式是在程序的線程中每隔一定的時間間隔,就獲得一次屏幕的寬度和高度,然後判斷寬度和高度是否變化,如果寬度和高度和已有的寬度和高度相比發生了變化,至於是變化成橫屏還是豎屏則只需要比較寬高就可以實現。在判斷到橫豎屏切換時,執行邏輯代碼即可。
使用這種方式由於每次線程循環都需要檢測,所以執行效率不高,但是由於一些轉屏手機不支持sizeChanged的方法回調,所以使用這種方式的通用性是最高的,是經常被使用的方法。
B)sizeChanged法(中斷方式)
這種方式是指如果轉屏手機對於MIDP支持比較規范,則當橫豎屏切換時會自動調用Canvas類中的sizeChanged方法,這樣就需要在Canvas的子類中覆蓋該方法即可,在該方法內部書寫橫豎屏切換的邏輯處理代碼即可。
使用這種方式由於是系統自動調用,所以執行效率很好,但是由於部分手機實現的不規范,所以通用性沒有第一種方式高。
說明:高級用戶界面自動切換,不需要書寫處理的代碼。
2、如何處理橫豎屏切換
在檢測到橫豎屏切換以後,就需要對於橫豎屏切換進行處理了,處理的方式一般有也有兩種:
A)簡單提示法
這種處理方式時指只實現一種屏幕模式下的邏輯,而在另外一種屏幕方式下顯示提示。例如只實現豎屏模式的界面,在橫屏模式下,只出現提示:“請在豎屏模式下使用本程序”。
使用這種方式程序實現比較簡單,只需要實現一套界面即可,適合於比較簡單的程序。
B)實現兩套UI法
這種處理方式時指在一個程序中實現兩套界面:一套橫屏一套豎屏。可以在程序中設置一個screenType的參數,在每個節目的繪制方法中根據該參數判斷是橫屏還是豎屏,然後執行不同的繪制代碼即可。
使用這種方式程序實現比較友好,但是程序開發和測試的工作量都要稍微大一點,而且橫豎屏切換時數據的變換也比較麻煩。
3、其它說明
在實現橫豎屏切換時,有些知識會幫助你實現一些很實用的功能:
在Nokia手機上禁止橫豎屏切換:
在S60 5th 及以上版本中,可以通過在jad或manifest文件中通過指定如下屬性來指定程序運行時的屏幕類型:
豎屏:Nokia-MIDlet-App-OrIEntation:portrait
橫屏:Nokia-MIDlet-App-OrIEntation:landscape
不足之處希望大家積極指正、交流和完善!