有沒有辦法讓應用程序完全忽略屏幕方向更改?如何使應用程序忽略屏幕方向更改?
回答
當鍵盤打開/關閉時,很容易覆蓋默認行爲並禁止屏幕方向更改。
修改清單
打開清單,切換到應用程序選項卡,選擇您希望重寫的方向改變行爲所需的活動。
中的屬性,你需要改變兩個領域: 屏幕方向:選擇縱向或橫向 - 取其所需。這將是默認佈局。
選擇您希望覆蓋的配置更改事件: 在這種情況下,這些是鍵盤隱藏和方向。
修改活動實施
現在,你需要重寫所需的活動範圍內的單一功能。
只需將下面的函數添加到您的活動的類。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
這是如果使用Source->Override/Implement Methods
菜單選項的默認實現。
就是這樣!現在你的方向將始終保持。
請記住,此設置是針對每個活動的 - 因此您需要爲每個您希望禁止方向更改的活動重複此步驟!
(基於SDK 1.1)
不簡單地調用通過超類沒有改變任何東西? – Matthias 2009-09-11 13:05:09
呃..我剛剛給了一個適合我的配方。 – 2009-09-11 13:50:26
我只是玩弄了一些非常相似的東西 - 我認爲Manifest文件的變化已經足夠了,至少它們對我來說(這似乎是合乎邏輯的,正如Matthias指出的那樣)。 – 2009-09-11 16:28:19
您可以在代碼中使用以下行(稱爲活動)相同的變化:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
一旦你撥打這個電話,你的應用程序將保持在橫向(或縱向)模式下。您可以使用相同的調用(使用不同的ActivityInfo枚舉),以使其對再次移動的方向敏感。
關於這個話題的完整的DevX文章有Developing Orientation-Aware Android Applications。
(警告:因爲我已經張貼此鏈接DevX搭起了一個註冊牆)
這是我用Android 2.2工作的唯一答案。謝謝! – 2010-09-10 03:45:16
您可以在AndroidManifest.xml
文件中像這樣定義你的活動:
<activity
android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|keyboard"/>`
在這種情況下,你應該爲每個活動設置屬性。我沒有找到所有應用程序的內聯解決方案。
如果您正在設置AndroidManifest.xml
或setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
,您將遇到與平板電腦有關的問題。他們的自然/默認取向是風景。
如果你真的想完全忽略屏幕方向改變我會用這個setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
值。我在Stack中詳細討論它 溢出問題Android natural sensor orientation help。
這裏是XML:
<activity
android:name=".MyActivity"
android:screenOrientation="nosensor"
android:configChanges="orientation|keyboardHidden|keyboard"/>
這不會旋轉屏幕。 – 2015-05-21 12:37:35
我不知道我跟着...這是關鍵,避免旋轉屏幕。 – bytebender 2015-05-27 17:18:20
「完全忽略屏幕方向更改」表示旋轉時,數據將保持不變。 – 2015-05-27 19:54:38
<activity android:screenOrientation="portrait"></activity>
您想閱讀的當前方向,並保持它在所有活動的一生就這樣,所以我所做的是下面的,在的onCreate結束:
// choose an orientation and stay in it
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
一下添加到活動:
android:configChanges="orientation|screenSize"
- 1. 如何更改另一個應用程序的屏幕方向
- 2. Android,當屏幕方向更改時,應用程序凍結
- 3. 屏幕方向更改後應用程序崩潰
- 4. 如何處理屏幕方向更改
- 5. Android應用程序的屏幕方向
- 6. Android - 更改屏幕方向
- 7. Qt屏幕方向更改
- 8. ANDROID屏幕方向更改
- 9. 屏幕方向更改
- 10. 如何處理主屏幕應用程序小部件的方向更改?
- 11. 以編程方式使用按鈕更改屏幕方向
- 12. 恢復應用程序時忽略初始屏幕活動 - Android
- 13. Android應用程序中的正常線程,ProgressDialog,屏幕方向更改
- 14. 如何更改Surface應用程序的應用程序方向
- 15. 如何使用javascript或jquery更改屏幕方向?
- 16. Android:如何使用屏幕方向更改來切換活動
- 17. Android:onRetainNonConfigurationInstance未調用屏幕方向更改
- 18. 如何爲其他應用程序設置屏幕方向?
- 19. 如何在iOS應用程序中鎖定屏幕方向?
- 20. 如何控制Android/iPhone Web應用程序的屏幕方向
- 21. 如何在自動測試過程中更改屏幕方向?
- 22. Android中忽略了方向更改AVD
- 23. 如何更改我的應用程序初始屏幕位置?
- 24. 如何以編程方式更改屏幕保護程序?
- 25. 爲什麼我的應用程序停止支持屏幕方向更改?
- 26. 當我更改屏幕方向時,我的Android應用程序崩潰
- 27. DirectDraw應用程序在屏幕方向更改後變爲黑色
- 28. 屏幕方向更改處理程序TabActivity
- 29. 忽略用戶忽略的應用程序更新
- 30. YouTubePlayerFragment黑色方向更改屏幕
只是一個注意事項,顯然在Android 1.5中有一個錯誤。如果您使用自定義屏幕大小(例如800x480,就像在Apad上)並強制它橫向(通過XML或代碼),那麼它實際上將是縱向的。 – Dornbi 2010-10-01 09:04:54
你可以從https://github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/delight/android/baselib/Screen.java調用'Screen.lockOrientation(this)'if你想鎖定和解鎖代碼的方向(這是更靈活) – caw 2015-03-04 18:33:09