检查Android手机的方向

如何检查Android手机是否处于横向或纵向状态?


当前配置用于确定要检索哪些资源等,可从资源的配置对象获取,如下所示:

getResources().getConfiguration().orientation

http://developer.android.com/reference/android/content/res/Configuration.html#orientation


如果你在某些设备上使用getResources()。getConfiguration()方向,你会发现它错了。 我们最初在http://apphance.com中使用了该方法。 感谢Apphance的远程记录,我们可以在不同的设备上看到它,并且我们看到碎片在这里起到了作用。 我看到了奇怪的情况:例如在HTC Desire HD上交替显示纵向和正方形(?!):

CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square

或根本不改变方向:

CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0

另一方面,width()和height()总是正确的(它被窗口管理器使用,所以最好是)。 我会说最好的想法是总是做宽度/高度检查。 如果你想一下,这正是你想要的 - 要知道宽度是小于高度(人像),相反(风景)还是相同(方形)。

然后它归结为这个简单的代码:

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

解决这个问题的另一种方法是不依赖于显示的正确返回值,而是依靠Android资源解析。

使用以下内容在文件夹res/values-landres/values-port创建文件layouts.xml

RES /价值观土地/ layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">true</bool>
</resources>

RES /值端口/ layouts.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_landscape">false</bool>
</resources>

在您的源代码中,您现在可以按如下方式访问当前的方向:

context.getResources().getBoolean(R.bool.is_landscape)
链接地址: http://www.djcxy.com/p/90717.html

上一篇: Check orientation on Android phone

下一篇: Switching to landscape mode in Android Emulator