手机屏幕旋转(手动+自动)

在Android开发中,通常认为通过代码设置屏幕旋转即可,但实际遇到需求要求手动和自动切换时,发现横屏转竖屏后自动旋转会失效。解决这个问题需要特定的代码实现,该文记录了一套有效的解决方案。
摘要由CSDN通过智能技术生成

一直以为手机屏幕旋转在 代码中设置强制转换就可以了

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)) {
                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值