3

我有一个画布,当方向改变时它会重新绘制。这是一个自定义画布,不是 android 提供的。

当屏幕布局更改时,应用程序状态和(所有视图的状态)都会重置。我将屏幕方向更改为仅纵向;它保持屏幕布局不变,但应用程序再次重置。

我检查了文档,发现当方向改变发生时,活动被破坏并再次重新启动。Savestate() 无法保存和加载位图数据或我的自定义画布所需的任何大数据。

我再次检查了文档,发现处理运行时更改主题,其中提到了在发生特定配置更改时调用的 onConfigurationChanged(),在我的情况下是“方向”。此方法可防止重新启动,并将如何实现配置更改留给开发人员。它甚至在上一段中提到,如果我不实现该方法,那么这只会导致活动跳过 onRestart() 并且什么也不做。我将清单文件设置为

android:screenOrientation="portrait"
android:configChanges="orientation"

而且我没有实现 onConfigurationChanged()。但这也无济于事。我不知道为什么。这对我来说似乎很有帮助。

如果您有任何解决方案,请发布。此外,应用程序需要一些合理的时间,我希望应用程序在方向改变时不要重新启动。实际上,当这种情况发生时,我不想做任何事情。我也在使用模拟器,所以请澄清它是否只是模拟器的问题。

PS 我的互联网连接中断,我正在使用我愚蠢的移动客户端。我检查了离线文档。请忍受我的拼写。我正在努力寻找解决方案,但目前我很困惑。

4

3 回答 3

7

在你的 AndroidMenifest.xml 中使用它

<activity
            android:name="MyActivity"
            android:configChanges="orientation|keyboard|keyboardHidden"
            android:screenOrientation="sensor" />
于 2012-05-08T13:56:16.757 回答
1

在清单中编写此代码:

android:configChanges="orientation|screenSize|keyboardHidden"
于 2016-02-04T17:29:14.137 回答
0

对于 AndroidManifest 中的每个活动,可以指定 screenOrientation。例如,要指定活动始终保持纵向模式,可以将以下内容添加到活动元素中:

安卓:screenOrientation="人像"

同样,可以使用以下命令指定横向模式:

安卓:screenOrientation="风景"

但是,前面仍然会导致硬键盘滑出时activity被销毁并重新启动。因此,第三种方法是可能的:告诉Android系统应用程序应该处理方向和键盘滑出事件。这是通过将以下属性添加到活动元素:android:configChanges="orientation|keyboardHidden"

于 2012-05-08T14:12:11.427 回答