我正在尝试根据按下按钮更改屏幕方向,以及聆听传感器的配置更改。
我的代码如下:
private boolean mFullScreen = false;
...
/**
* This method is used by button to toggle orientation
*/
public void toggleFullScreen() {
mFullScreen = !mFullScreen;
switchFullScreen();
}
private void switchFullScreen() {
if (mFullScreen) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
switch (newConfig.orientation) {
case Configuration.ORIENTATION_LANDSCAPE: {
getSupportActionBar().hide();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
break;
}
case Configuration.ORIENTATION_PORTRAIT: {
getSupportActionBar().show();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
break;
}
}
}
在清单中:
<activity
android:name="Activity"
android:configChanges="screenSize|orientation />
首先检测到传感器的配置更改,但是一旦从按钮切换了方向,就不会检测到它。
答案 0 :(得分:0)
只有ActivityInfo.SCREEN_ORIENTATION_SENSOR
和ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
您的活动才会对传感器做出反应。将屏幕方向设置为纵向或横向会阻止旋转,这是它们的主要目的
答案 1 :(得分:0)
您可以这样做:
private void switchFullScreen() {
if (mFullScreen) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}