一直以为手机屏幕旋转在 代码中设置强制转换就可以了
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏设置
最近项目中提需求 要求手动和自动 随意切换旋转屏幕
做完了以后才发现当横屏状态下点击竖屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏设置
后 自动切换横屏失效, 只有手动到了横屏再自动切换回竖屏才会重新回到自动切换的状态
最终找了一套代码解决了燃眉之急, 先做个记录
原文链接:https://www.2cto.com/kf/201508/431285.html
public class ScreenSwitchUtils {
private static final String TAG = ScreenSwitchUtils.class.getSimpleName();
private volatile static ScreenSwitchUtils mInstance;
private Activity mActivity;
// 是否是竖屏
private boolean isPortrait = true;
private SensorManager sm;
private OrientationSensorListener listener;
private Sensor sensor;
private SensorManager sm1;
private Sensor sensor1;
private OrientationSensorListener1 listener1;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 888:
int orientation = msg.arg1;
if (orientation > 45 && orientation < 135) {
} else if (orientation > 135 && orientation < 225) {
} else if (orientation > 225 && orientation < 315) {
if (isPortrait) {
Log.e(test, 切换成横屏);
mActivity.setRequestedOrientation(0);
isPortrait = false;
}
} else if ((orientation > 315 && orientation < 360) || (orientation > 0 && orientation < 45)) {