0
我想有根據設備的2種不同的方向性模式 - 如果設備屏幕超大,方向應該是景觀,如果設備屏幕較小,方向應該是肖像 。Android 3.2的摩托羅拉Xoom的取向變化
我已經做以下檢查:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set orientation for tablets and phones
if (isXLarge()) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setContentView(R.layout.activity_main);
}
該活動的清單項:
<activity
android:configChanges="keyboardHidden"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:name=".MyActivity"/>
它可以在手機上正常,但是在摩托羅拉XOOM平板電腦採用Android 3.2這不能正常工作。
如果我們假設平板是身體保持在縱向模式下,以下動作順序發生:創建
- 活動,並在縱向模式顯示 - 這是直觀地顯示了半秒
- 活動在橫向模式下被銷燬並重新創建。
問題是,平板電腦目前在物理上保持的方向始終存在中間過渡,並且在此之後活動以所需的方向重新創建。
謝謝你對這個問題的任何信息或建議,並請告訴我,如果你需要更多的細節。
方法isXLarge()正確返回顯示器的類型
你能解釋一下嗎?我不想自己處理方向,直到我絕對必須 - 我只需要在XLarge屏幕中固定LANDSCAPE方向,並在較小的屏幕上固定PORTRAIT方向。 – middlehut
因此,如果我理解正確,您希望以橫向模式顯示您的應用程序,儘管XLarge屏幕在物理上保持了哪個方向。在這種情況下,如果您不覆蓋'onConfigurationChanged()'方法,則每次更改物理方向時,您的活動都將被銷燬並重新創建。這意味着每次發生這種情況時都必須保存數據/狀態。從你的問題我懷疑這可能是爲什麼它被破壞和重新創建的原因。 – Gan
在我看來,我沒有足夠的技巧來理解你的意思,我不能用你的答案作爲解決問題的指導。所以我會投票+1,並繼續考慮另一個解決方案... – middlehut