首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android方向传感器-完全关闭方向传感器

Android方向传感器-完全关闭方向传感器
EN

Stack Overflow用户
提问于 2012-09-24 22:22:31
回答 2查看 595关注 0票数 1

我想知道如何在我的android应用程序中完全关闭某些活动的方向传感器。

这就是我努力解决的问题。假设我使用以下命令在onCreate (或onStart/onResume)方法中动态设置活动的方向。

代码语言:javascript
复制
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

我的经验是,如果我以一种根据方向传感器导致横向模式的方式握住设备,屏幕在显示器上的显示速度会明显加快。

因此,感觉就像活动首先希望按照传感器的建议在方向上设置布局,然后根据setRequestedOrientation方法进行切换。我有时甚至会在屏幕上看到这一点,就像在相关的帖子android - unexpected brief orientation change at switch of activity中所描述的那样。

看起来我调用setRequestedOrientation已经太晚了。因此,我想知道如何完全关闭方向传感器,以避免在setRequestedOrientation调用之前设置方向。或者,作为替代方案,如何及时调用setRequestedOrientation。由于我需要在运行时(首选项设置)时动态决定此功能,因此我无法在清单中设置固定的方向。

在此之前,非常感谢您对此问题的任何提示。

马丁

编辑:我忘了提一下,清单中包含

代码语言:javascript
复制
android:configChanges="keyboardHidden|orientation|screenSize"
EN

回答 2

Stack Overflow用户

发布于 2012-09-24 22:40:28

性能影响的发生是因为android会终止您的活动,然后使用新配置启动一个新实例。一个很好的解决方案是手动处理配置更改。通过将android:configChanges="orientation“添加到清单文件中的activity元素,覆盖activity中的onConfigurationChanged方法来进行布局

另一种解决方案是有两个活动,一个只在风景中工作,另一个在纵向中工作,通过在清单文件中指定方向属性,并午餐合适的一个。

票数 0
EN

Stack Overflow用户

发布于 2012-09-24 22:59:07

这就是在运行时设置方向的方法,如下所示

代码语言:javascript
复制
int currentOrientation = getRequestedOrientation();

if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else {
   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12566967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档