我對我的活動進行了一些 API 呼叫,并針對縱向和橫向模式進行了不同的 UI 設計。
我在清單中添加了以下代碼以避免模式更改時的活動娛樂。但是使用下面的代碼,將不支持不同的 UI。因此,在將模式從一種更改為另一種時,這兩種情況都將顯示相同的 UI。
android:configChanges="orientation|screenSize|keyboardHidden"
通過洗掉此代碼進行嘗試,然后該用戶界面按預期作業,但每次旋轉都會重新創建活動。我也想避免這種情況。請為此提出更好的解決方案。
我的活動配置更改的處理方式如下
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (getResources().getBoolean(R.bool.portrait_only)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
}
}
}
uj5u.com熱心網友回復:
將您的景觀布局放入
res/layout-land/
當螢屏處于橫向模式時,這將處理布局。
并且還用于viewModel處理配置更改,如果您viewModel對其作業方式有任何疑問,請訪問此
ViewModel 如何在配置更改中幸存下來
uj5u.com熱心網友回復:
當通過設備旋轉改變方向時,活動被破壞并重新創建。你無法阻止這一點。盡管您可以通過遵循以下任何一項操作,在每次更改方向時保存額外的 api 呼叫 -
- 使用ViewModel和LiveData。ViewModel 在方向更改后仍然存在,并且不會在每次方向更改期間重新創建,因此任何需要跨方向更改保存的資料都應保存在 ViewModel 中。我強烈建議您閱讀應用程式架構指南,以更好地理解和實施適合您的應用程式的正確架構。
- 如果您不想在上面實作和/或正在尋找快速解決方案,您可以
Bundle通過覆寫onSaveInstanceState方法保存資料并通過覆寫恢復它onRestoreInstanceState。但如果您的api回應非常大,我不會建議這樣做。
我建議您遵循第一點,因為這將是繞過您的用例的最佳方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339542.html
標籤:安卓 安卓布局 android-清单 安卓方向 android-configchanges
上一篇:如何在容器中顯示國家代碼
下一篇:如何顯示倒數計時器
