点击按钮切换横竖屏

1.定义如下变量
    private OrientationEventListener mOrientationListener; // 屏幕方向改变监听器
    private boolean mIsLand = false; // 是否是横屏
    private boolean mClick = false; // 是否点击
    private boolean mClickLand = true; // 点击进入横屏
    private boolean mClickPort = true; // 点击进入竖屏


2.初始化时调用如下代码:

/**
     * 开启监听器
     */
    private final void startListener() {
        mOrientationListener = new OrientationEventListener(this) {
            @Override
            public void onOrientationChanged(int rotation) {
                // 设置竖屏
                if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
                    if (mClick) {
                        if (mIsLand && !mClickLand) {
                            return;
                        } else {
                            mClickPort = true;
                            mClick = false;
                            mIsLand = false;
                        }
                    } else {
                        if (mIsLand) {
                            setPortait();
                            mIsLand = false;
                            mClick = false;
                        }
                    }
                }
                // 设置横屏
                else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
                    if (mClick) {
                        if (!mIsLand && !mClickPort) {
                            return;
                        } else {
                            mClickLand = true;
                            mClick = false;
                            mIsLand = true;
                        }
                    } else {
                        if (!mIsLand) {
                            setLanscape();
                            mIsLand = true;
                            mClick = false;
                        }
                    }
                }
            }
        };
        mOrientationListener.enable();
    }


3.ondestory方法中,关闭监听

mOrientationListener.disable();



4.点击切换按钮执行如下方法:

public void changeScreen() {
        mClick = true;
        if (!mIsLand) {
            setLanscape();
            mIsLand = true;
            mClickLand = false;
        } else {
            setPortait();
            mIsLand = false;
            mClickPort = false;
        }
    }

5.返回键监听:

 //点击返回按钮及系统返回
    private void onActivityBack() {
        if (isLandscape()) {//水平
            if (isLandscape()) {
                setPortait();
            }else{
                setLanscape();
            }
        } else {//竖直方向
            finish();
        }
    }


6.oncfigurationChanged方法修改

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Utils.printLog("lb","onConfigurationChanged=====");
        if (isLandscape()) {//水平
            Utils.printLog("lb","onConfigurationChanged===水平==");
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }else if (isPortrait()) {//竖直方向
            Utils.printLog("lb","onConfigurationChanged===竖直==");
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

       //此处可以隐藏显示你的布局
        setLandscapeOrPortraitLayout();
    }




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值