4

我想知道设备屏幕宽度是否大于高度,例如HTC chacha,它的屏幕宽度为480,高度为320

我用这个代码来确定它

Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        if(display.getWidth() > display.getHeight())
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        else
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

设备实际屏幕尺寸为 480w x 320h 当我使用此代码时我得到 320w x 480h

4

3 回答 3

4

此代码将返回屏幕的宽度(w)和高度(h)。

DisplayMetrics dMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dMetrics);
float density = dMetrics.density;
int w = Math.round(dMetrics.widthPixels / density);
int h = Math.round(dMetrics.heightPixels / density);

活动是您想要获取屏幕大小的活动的实例。

您必须记住:当您的设备处于横向时,w > h。当它处于纵向时 w < h。

因此,从宽度和高度您可以检测到您的设备处于什么方向。

于 2013-05-23T14:45:05.613 回答
4
DisplayMetrics dimension= new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dimension);
        int w = dimension.widthPixels;
        int h = dimension.heightPixels;

      if(h>w){
        //"portrait"
      }
      else{
       //"landscape"
       }
于 2013-12-20T04:40:02.277 回答
2

方向定义哪一侧是宽度或高度。如果您有 480x320,那是因为当您打电话时,display.getWidth()您已经处于横向模式。我不知道这个设备,但是当你把它竖着拿的时候,默认方向很可能是横向的……

如果您确实需要知道何时使用此类设备,则可以检查当前方向:

 getResources().getConfiguration().orientation

并将其与 OrientationEventListener 的结果进行比较,OrientationEventListener使用传感器计算以度为单位的真实物理方向。

于 2013-05-23T14:26:09.423 回答