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

    /** 获取屏幕是否是竖屏
* @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;
}

Android 判断屏幕方向一个大坑的更多相关文章

  1. android自适应屏幕方向和大小

    一:不同的layout Android手机 屏幕 大小不一,有480x320, 640x360, 800x480.怎样才能让App自动 适应不同的屏幕 呢?      其实很简单,只需要在res目录下 ...

  2. Android判断屏幕锁屏的方法总结

    由于做一个项目,需要判断屏幕是否锁屏,发现网上方法很多,但是比较杂,现在进行总结一下: 总共有两类方法: 一.代码直接判定 二.接收广播 现在先说第一类方法(代码直接判定): 1.通过PowerMan ...

  3. Android设置屏幕方向

    设置方法:在AndroidManifest.xml中的Activity里加一个属性android:screenOrientation.例如设置该Activity为横向 <activity and ...

  4. android 设置屏幕方向

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//通过程序改变屏幕显示的方向 1.landscape:横屏(风景 ...

  5. iphone之判断屏幕方向

    有两种方法可以判断 1,程序刚开始运行的时候,不能获取当前方向.给你说几种方式,你试一下: 1. 可以在启动后0.01秒执行初始化的代码,这个时候就可以获取设备方向了. 2. 另外一种方式,借助状态栏 ...

  6. Android Studio 屏幕方向以及UI界面状态的保存

    package com.example.orientation; import android.os.Bundle; import android.util.Log; import android.v ...

  7. Android判断屏幕开关状态

    方法一:使用系统服务 PowerManager pm= (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); if(!pm. ...

  8. android 判断屏幕是否亮着

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); boolean screen = p ...

  9. Activity系列讲解---Activity运行时的屏幕方向,全屏,窗体模式的设置

    Android内置了方向感应器的支持.Android会根据所处的方向自动在竖屏与横屏间切换.但是有的应用程序只能在横/竖屏时运行,比如某些游戏,此时我们要锁定该Activity运行时的屏幕方向,< ...

随机推荐

  1. 如何将windows日志转成syslog格式并发到远程sysylog服务器

      安装Snare, 随便找了个版本下载下来,安装一路next,除了中间让你输入一次http的管理登录口令.   2,配置 之后打开URL:http://192.168.37.23:6161/,输入默 ...

  2. 探索Skip List (跳跃表)

    附William Pugh的论文 Skip Lists: A Probabilistic Alternative to Balanced Trees 写在前面 以下内容针对的是Skip List的插入 ...

  3. 详细讲解:通过composer安装TP5.1(Thinkphp5.1)

    现在TP5越来越火了,TP5也更新到了5.1版本,但是5.1以上版本只能通过composer来进行安装,那么这里贴出详细的步骤 前提:PHP版本必须要5.6以上 参考网址:http://www.thi ...

  4. 【JavaScript 封装库】BETA 1.0 测试版发布!

    /* 源码作者: 石不易(Louis Shi) 联系方式: http://www.shibuyi.net =============================================== ...

  5. 详解 CSS 居中布局技巧

    水平居中元素: 通用方法,元素的宽高未知 方式一:CSS3 transform .parent { position: relative; } .child { position: absolute; ...

  6. 【转】WebSocket 是什么原理?为什么可以实现持久连接?

    WebSocket是HTML5出的东西 也就是说HTTP协议没有变化 但HTTP是不支持持久连接的(长连接,循环连接的不算)或者说WebSocket干脆就不是基于HTTP来执行的.但是...说不通啊. ...

  7. frcnn_train_data_param的distort_param实现

    frcnn_train_data_param frcnn_train_data_param { source: "./data/train_list.txt" root_folde ...

  8. 【洛谷P1967】[NOIP2013]货车运输

    货车运输 题目链接 显然,从一点走到另一点的路径中,最小值最大的路径一定在它的最大生成树上 所以要先求出最大生成树,再在生成树上找最近公共祖先,同时求出最小值. #include<iostrea ...

  9. leanote开源云笔记

    下载链接 http://yunpan.cn/cZ42hEEQcYMMz (提取码:16a1)

  10. 旧文备份: CANopen的LSS子协议中文翻译

    有关节点地址和网络波特率的在线设置等:下载