2011-03-21 61 views
23

我希望我的視圖僅在橫向模式下順時針和逆時針旋轉。我如何才能在Android中以橫向模式旋轉顯示?

我讀到了關於android < 2.2的唯一逆時針方向,這不是問題,我的應用程序現在是+2.2。

修改我的清單趕上配置更改

android:configChanges="keyboardHidden|orientation" 

我重寫我的活動趕上配置更改

@Override 
public void onConfigurationChanged(Configuration newConfig) { 

,我知道如何捕捉方向

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
int rot = display.getRotation(); 

但。 ..我不知道如何觸發合適的風景定位,我這樣做:

if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270){ 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
} 

但總是旋轉:-(

到counterclocwise如何設置左,右橫向?

編輯

如果我設置在明顯的傾向:

機器人:screenOrientation = 「風景」

活動的佈局始終保持在 「左風景」,和我想要在左右景觀之間切換:S

+0

我與我的應用程序有同樣的問題。我正在使用API​​8,但我無法找到僅啓用橫向模式(CW和CCW)的方式 – SERPRO 2011-10-19 15:50:21

回答

1

您是否嘗試過添加第是否在activity標籤內的manifest中查看它是否自動處理它?

android:screenOrientation = "landscape" 
+0

當我這樣做時,活動在橫向模式下啓動,但始終是右側軌跡球的左側橫向。 – rubdottocom 2011-03-21 13:49:55

+0

這是在一個或多個設備上,哪一個? – blindstuff 2011-03-21 18:59:44

+0

Nexus One 2.3.3,項目配置爲API 8 – rubdottocom 2011-03-22 11:02:19

0

的AndroidManifest.xml - >應用程序 - >選擇您的活動 - >屏幕方向=景觀。

55

如果您正在構建您的應用程序爲Android 2.3及更高版本,你應該設置清單屬性作爲

機器人:screenOrientation = 「sensorLandscape」

和您的應用程序將旋轉要麼(左或右)景觀位置。

如果您正在構建您的應用程序爲Android 2.2及以上,但要在Android 2.3及更高版本上運行它作爲「sensorLandscape」配置,你可以嘗試這樣的事情

public static final int ANDROID_BUILD_GINGERBREAD = 9; 
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) { 
     setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
    } 
... 

這是最好的在我的情況下處理風景方向變化的方式。我無法找到任何更好的方式將屏幕旋轉到Android 2.2及更高版本的左側或右側風景方向。 我嘗試閱讀傳感器方向並基於此設置景觀位置,但在我看來,只要您調用「setRequestedOrientation(ActivityInfo。SCREEN_ORIENTATION_LANDSCAPE);「傳感器關閉(對於你的應用/活動),你不能通過傳感器讀取方向。

+1

無需定義自己的gingerbread和sensor fint int變量,使用Build.VERSION_CODES.GINGERBREAD和ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE – OpenUserX03 2012-07-20 20:38:11

+3

您必須定義自己的變量,因爲Build。 VERSION_CODES.GINGERBREAD和ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE尚未在Android 2.2和更舊的平臺上定義(因爲它們當時並不存在)。此修補程序適用於Android 2.2和更舊的Android操作系統。 – croc 2012-09-04 13:09:57

+0

較舊的Android庫不支持Build.VERSION.SDK_INT,因此我使用Integer.parseInt(android.os.Build.VERSION.SDK)。另外android:screenOrientation =「landscape」必須留在清單中(這裏沒有提到答案)。 – Jonathan 2013-06-28 06:17:24

6

在您的清單活動的聲明,而不是

android:screenOrientation = "landscape" 

使用

android:screenOrientation = "sensorLandscape"

相關問題