2011-07-25 103 views
0

我意識到這是一個重複的問題,但自從Android 2.3+(薑餅)以來,還沒有發佈和接受明確的答案。正確鎖定跨平臺版本屏幕方向的方法

我有代碼檢索我的Froyo手機和我的Honeycomb平板電腦當前的屏幕方向。我的問題是:

  1. 我在前薑餅版本, 檢索兩個方向我應該使用哪一個?
  2. 我應該使用什麼方法來設置方向/旋轉以將其鎖定到位?

這裏是因爲我有現在的方法(檢索,但不設定)

protected void lockCurrentOrientation() { 

    int orientation; 
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) 
    { 
     orientation = getResources().getConfiguration().orientation; 
     Log.d(LogTag, "Orientation via getConfiguration " + String.valueOf(orientation)); 

     // Not working - reporting -1 (SCREEN_ORIENTATION_UNSPECIFIED) 
     // orientation = getRequestedOrientation(); 
     // Log.d(LogTag, "Orientation via getRequestedOrientation " + String.valueOf(orientation)); 

     orientation = display.getOrientation(); 
     Log.d(LogTag, "Orientation via WindowManager " + String.valueOf(orientation)); 
    } 
    else 
    { 
     orientation = display.getRotation(); 
     Log.d(LogTag, "Orientation via Display.getRotation " + String.valueOf(orientation)); 
    } 
} 

回答

0

如果您打算針對舊版本,然後使用getOrientation(),如果您打算針對新版本,然後使用getRotation()。按照目標,我的意思是無論你把你的目標sdk放在清單文件中。

+0

我的代碼示例已經做到了。我在問什麼是正確的方式來設置它。在旋轉的情況下,文檔說返回的值是相對於設備的「自然方向」的角度,但我知道如何設置方向的唯一方法是通過setRequestedOrientation傳遞引用定向值的常量,而不是相對角度以自然的方向 – Rich