美文网首页
Android 横屏旋转180°监听方式

Android 横屏旋转180°监听方式

作者: 十七17 | 来源:发表于2021-10-19 21:29 被阅读0次

横屏180°旋转系统不会回调到到onConfigurationChanged(),只能使用其他的方案,目前有2个方案
1、使用OrientationEventListener 监听屏幕的旋转,里面本质使用的是TYPE_ACCELEROMETER传感器,具体如下:

 mOrientationListener = new OrientationEventListener(this) {
            @Override
            public void onOrientationChanged(int orientation) {
                Log.d(TAG, "onOrientationChanged: " + orientation);
                if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {
                    return; // 手机平放时,检测不到有效的角度
                }
                // 只检测是否有四个角度的改变
                if (orientation > 350 || orientation < 10) {
                    // 0度:手机默认竖屏状态(home键在正下方)
                    Log.d(TAG, "下");
                } else if (orientation > 80 && orientation < 100) {
                    // 90度:手机顺时针旋转90度横屏(home建在左侧)
                    Log.d(TAG, "左");
                } else if (orientation > 170 && orientation < 190) {
                    // 180度:手机顺时针旋转180度竖屏(home键在上方)
                    Log.d(TAG, "上");
                } else if (orientation > 260 && orientation < 280) {
                    // 270度:手机顺时针旋转270度横屏,(home键在右侧)
                    Log.d(TAG, "右");
                }
            }
        };

开启调用mOrientationListener. enable(), 关闭调用mOrientationListener. disable();这种方式对性能消耗比较大, 但是可以获取到手机当前的角度

2、使用监听DisplayManager方式,手机切换方向会导致UI 显示的改变,所以会回调到这里

DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() {
        @Override
        public void onDisplayAdded(int displayId) {
           android.util.Log.i(TAG, "Display #" + displayId + " added.");
        }

        @Override
        public void onDisplayChanged(int displayId) {
           android.util.Log.i(TAG, "Display #" + displayId + " changed.");
        }

        @Override
        public void onDisplayRemoved(int displayId) {
           android.util.Log.i(TAG, "Display #" + displayId + " removed.");
        }
     };
     DisplayManager displayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
     displayManager.registerDisplayListener(mDisplayListener, UIThreadHandler);

这种方式不会耗性能

相关文章

  • Android 横屏旋转180°监听方式

    横屏180°旋转系统不会回调到到onConfigurationChanged(),只能使用其他的方案,目前有2个方...

  • iOS旋转横屏(解决禁用旋转时全频横屏方法)

    禁用设备自动旋转时的横屏方法 监听设备旋转 原理:给要横屏的视图添加父视图,旋转这个父视图 不禁用设备自动旋转横屏...

  • iOS 横竖屏处理

    开发中有竖屏和横屏的界面时,我们需要监听屏幕旋转,强制横屏,锁定方向后的屏幕强制旋转等处理.以下做个总结: 一.横...

  • 屏幕旋转

    当activity设置默认属性的时候:竖屏和横屏旋转可以通过监听onConfigurationChanged来判断...

  • Android只支持横屏旋转,监听自动旋转开关

    开发需求:只能横屏,并且根据手机自动旋转开关的状态调整是否可以上下翻转 设置横屏其实很简单,就是设置android...

  • iOS 设备相关

    1.判断设备倾斜角度 2.监听设备旋转 3.强制横屏

  • H5 使用JS禁止横竖屏切换、强制横竖屏

    ipad: 90 或 -90 横屏ipad: 0 或180 竖屏Andriod:0 或180 横屏Andriod:...

  • iOS屏幕旋转

    方式一 假旋转 修改view的transform,通过旋转来实现横屏 工程配置 重写shouldAutorotat...

  • iOS横屏的深入研究

    iOS横屏模式分2种:跟随系统自动旋转、强制横屏。无论哪种横屏模式,都有2中实现途径:1.重写系统旋转方法。2.对...

  • iPad横竖屏适配

    一、监听横竖屏的切换 1、通知方式: 如果使用这个通知,当iPhone/iPad旋转的时候,你会得到的旋转方向会是...

网友评论

      本文标题:Android 横屏旋转180°监听方式

      本文链接:https://www.haomeiwen.com/subject/dofzoltx.html