我想知道如何在我的android应用程序中完全关闭某些活动的方向传感器。
这就是我努力解决的问题。假设我使用以下命令在onCreate (或onStart/onResume)方法中动态设置活动的方向。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);我的经验是,如果我以一种根据方向传感器导致横向模式的方式握住设备,屏幕在显示器上的显示速度会明显加快。
因此,感觉就像活动首先希望按照传感器的建议在方向上设置布局,然后根据setRequestedOrientation方法进行切换。我有时甚至会在屏幕上看到这一点,就像在相关的帖子android - unexpected brief orientation change at switch of activity中所描述的那样。
看起来我调用setRequestedOrientation已经太晚了。因此,我想知道如何完全关闭方向传感器,以避免在setRequestedOrientation调用之前设置方向。或者,作为替代方案,如何及时调用setRequestedOrientation。由于我需要在运行时(首选项设置)时动态决定此功能,因此我无法在清单中设置固定的方向。
在此之前,非常感谢您对此问题的任何提示。
马丁
编辑:我忘了提一下,清单中包含
android:configChanges="keyboardHidden|orientation|screenSize"发布于 2012-09-24 22:40:28
性能影响的发生是因为android会终止您的活动,然后使用新配置启动一个新实例。一个很好的解决方案是手动处理配置更改。通过将android:configChanges="orientation“添加到清单文件中的activity元素,覆盖activity中的onConfigurationChanged方法来进行布局
另一种解决方案是有两个活动,一个只在风景中工作,另一个在纵向中工作,通过在清单文件中指定方向属性,并午餐合适的一个。
发布于 2012-09-24 22:59:07
这就是在运行时设置方向的方法,如下所示
int currentOrientation = getRequestedOrientation();
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}https://stackoverflow.com/questions/12566967
复制相似问题