zoukankan      html  css  js  c++  java
  • Android 判断屏幕方向一个大坑

    正常的判断屏幕方向的代码:

        /** 获取屏幕是否是竖屏
         * @return
         */
        @SuppressLint("SwitchIntDef")
        public boolean isScreenPortrait(){
            int or = getRequestedOrientation();
            switch (or) {
                case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :// 横屏
                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:
                    return false;
                case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :// 竖屏
                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:
                    return true;
                default:
                    return true;
            }
        }

    但是在onConfigurationChanged

            switch (newConfig.orientation) {
                case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :// 横屏
                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:
                    APP.isScreenPortrait = false;
                    break;
                case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :// 竖屏
                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:
                    APP.isScreenPortrait = true;
                    break;
            }

    我就很随意的这样写了,本来我都不想测试,我觉得一定是对的。然后跑了一下程序,发现,是错的。我点击去
    onConfigurationChanged(Configuration newConfig) 的switch (newConfig.orientation) 这个类,发现:

        /**
         * Overall orientation of the screen.  May be one of
         * {@link #ORIENTATION_LANDSCAPE}, {@link #ORIENTATION_PORTRAIT}.
         */
        public int orientation;

    发现这里的值只能是#ORIENTATION_LANDSCAPE}, {@link #ORIENTATION_PORTRAIT其中的一个。啊,自己的无知。应该去点进去看看人家会传递回来什么信息的。然后正确的判断是:

            switch (newConfig.orientation) {
                case Configuration.ORIENTATION_LANDSCAPE :// 横屏
                    APP.isScreenPortrait = false;
                    break;
                case Configuration.ORIENTATION_PORTRAIT :// 竖屏
                    APP.isScreenPortrait = true;
                    break;
            }
  • 相关阅读:
    c++函数学习-关于c++函数的林林总总
    STL学习笔记(七) 程序中使用STL
    STL学习笔记(六) 函数对象
    本学期总结与课程建议
    12.19
    12.18Tomcat相关知识
    12.17
    12.16
    12.15
    12.14
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/10568553.html
Copyright © 2011-2022 走看看