2

我一直在寻找如何在 android 应用程序中旋转屏幕时不重新加载整个活动。最后,我发现只使用

android:configChanges="orientation"

在 AndroidManifest 中的活动定义中确实足够了。当我旋转手机时,活动不会重新加载,我的所有视图都完美地调整为横向,没有任何问题,onSaveInstanceState 和 onRestoreInstanceState(在某些编程旋转指南中使用)都不会被触发。

但如果就这么简单,为什么我发现的所有教程和指南都提供了如此复杂的解决方案?IE

http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

在 Android 中保存一些关于方向变化的数据

通过我的实验,一切都会自动正确地重新渲染,但是我不知道的简单解决方案是否存在一些隐藏的问题?真的那么简单和正确吗?

谢谢

4

3 回答 3

1

对于“简单”的应用程序,例如联系人选择器或类似的东西,你真的不需要保存信息,你真的只需要重新定位视图,所以使用 android:configChanges="orientation" 就可以了。

但是,如果您正在开发诸如游戏之类的东西或任何需要计算屏幕面积的东西,并且在纵向/横向模式下会有所不同,您需要保存此信息并重新计算所有内容以正确显示它,而不会出现错误。

顺便说一句,我不是Android专家或其他什么,这只是我的简单观点/理解。如果这不是正确的答案,请随意对我投反对票。

于 2013-01-22T13:22:33.120 回答
1

如果您在配置更改时不需要更改任何资源,这很好。但是假设您定义了景观资源,那么您现在需要自己处理交换 UI 资源。但是如果 Activity 不需要改变资源,那真的就这么简单。

此外,如果您在清单中以 SDK 13 或更高版本为目标,请注意,您必须包含用于旋转更改的 screenSize 值,例如:-

android:configChanges="orientation|screenSize"

如果您的目标是 SDK 12 或更低版本,那么您已经掌握了它就可以了。

于 2013-01-22T13:23:05.077 回答
-1

在清单文件中添加它

android:configChanges="keyboardHidden|orientation"

这真的足够了。我也有同样的疑问

于 2013-01-22T13:16:41.723 回答