2012-02-16 68 views
3

我有一個必須始終以橫向模式啓動的活動。在我的onCreate()方法中,我使用屏幕的尺寸(寬度和高度)來設置界面,所以重要的是最初不是以錯誤的方向創建活動。強制在平板電腦上使用橫向模式

要做到這一點,我已經在清單如下:

<activity android:name="app.myapp.WideActivity" 
    android:screenOrientation="landscape" 
    android:configChanges="keyboardHidden|orientation" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>    

這似乎是工作完全沒我的手機上,但在我的平板電腦(三星Galaxy Tab的Android 3.1)的活動中推出肖像模式和開關方向幾乎立即(在onCreate()方法 - 似乎)。在我的手機(android 2.3)上,在調用onCreate()方法之前,屏幕已經是橫向的。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 放在onCreate()方法似乎沒有幫助。我怎樣才能實現我想要做的?

回答

0

我不知道你是否可以解決確切的問題。在我看來,問題在於三星實施活動/窗口管理框架部分。 但是,您可以嘗試通過延遲渲染來防止糟糕的用戶界面出現。

在onCreate()顯示一些默認佈局 - 只是一個簡單的黑色佈局拉伸到整個屏幕。 在onResume()檢查屏幕的方向,如果它不是風景,那麼你發佈一個延遲的runnable將應用你的佈局(setContentView(my_UI))。 在runnable中,您還可以檢查屏幕方向是否爲橫向,如果方向仍然是縱向,請重新發布runnable,否則請設置UI。

+0

感謝您的回答。它看起來像奇怪的行爲,它似乎正確地處理肖像,但不是風景。我認爲對於我的應用程序,我可以檢查方向並根據需要調換高度和寬度值。這使我的活動正確顯示。 – 2012-02-16 03:20:12

+0

實際上,現在我想到了,如果我要刪除'configChanges =「orientation」',那麼當設備切換方向並且UI將自行修復時,onCreate()方法會再次被調用。也可以在onCreate方法中添加一個檢查,而不是在縱向模式下繪製UI – 2012-02-16 12:09:22

相關問題