【发布时间】:2018-05-18 13:47:53
【问题描述】:
我正在尝试使用OrientationEventListener 检测手机是否发生方向变化,但代码未按预期工作。以下是我与此问题相关的部分代码:
public class MainActivity extends Activity {
OrientationEventListener myOrientationEventListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
myOrientationEventListener
= new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL){
@Override
public void onOrientationChanged(int arg0) {
DO SOMETHING;
}
};
if (myOrientationEventListener.canDetectOrientation()) {
myOrientationEventListener.enable();
}
如果我在调试模式下在DO SOMETHING 行设置一个断点,并且不移动手机查看arg0 的值,我会看到它变为 8,然后是 9,然后是 8,以此类推。每次我进入onOrientationChanged函数。
我的问题是:为什么手机放在桌子上不动,却进入了onOrientationChanged函数?。第二个问题是为什么arg0的值在8和9之间变化?
顺便说一下,我已经在AndroidManifest.xml 中使用android:screenOrientation="portrait" 强制我的主要布局为纵向。
代码中是否有我遗漏或不正确的内容? 提前感谢您对此提供的任何帮助。
【问题讨论】:
-
你为什么不使用 onConfigurationChanged ?
-
@JaiminModi 即使我已将布局强制为
portrait,这是否可行? -
@JaiminModi 你的意思是我用了
onConfigurationChanged而不是onOrientationChanged? -
兄弟,我的意思是,如果您要检查应用是横向还是纵向,请使用 onConfigurationChanged()。
标签: android screen-orientation