2012-09-20 46 views
2

我的程序是在橫向模式(API7)上運行,所以我加了下面的mainfest commnand和我如何檢測橫向模式方向

程序。

 android:screenOrientation="landscape" 
     android:configChanges="orientation|keyboardHidden" 

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Althougth在風景模式下,它也需要知道用戶持握在橫向或縱向。

從這裏,我找到了一些關於方向的文章。我試過

onConfigurationChanged和display.getOrientation();

不幸的是,onConfigurationChanged不起作用。而getOrientation()只是返回景觀。

如何在沒有SensorManager的情況下正確定位信息?

回答

0

要在運行時確定設備的當前方向,可以使用WindowManager類。下面的代碼片段演示一下:

WindowManager wm = getWindowManager(); 
Display d = wm.getDefaultDisplay(); 

if (d.getWidth() > d.getHeight()) { 
// landscape mode 
} 
else { 
// portrait mode 
} 
+0

我試過這個解決方案,但它只是可以返回「風景模式」只 – John

+0

嘗試刪除從清單文件中關於screenOrientation和configurationChanges的條目,然後使用窗口管理器。一旦你放置它們,你強迫設備停留在一種模式下,因此你始終會得到相同的結果 –

+0

隨着Marcin從清單中移除,你還應該從代碼中移除setRequestedOrientation。正如馬辛所說,憑藉清單和代碼,您始終擁有橫向模式。當您在設備上進行測試時,即使您將手機放在縱向位置,橫向佈局也應始終存在。 –