Android方向和屏幕尺寸问题

时间:2013-05-23 13:27:51

标签: android android-layout

我想知道设备屏幕宽度是否大于高度 像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

3 个答案:

答案 0 :(得分: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&gt; H。当它处于纵向时w <小时。

所以从宽度和宽度您可以检测设备的高度是朝哪个方向。

答案 1 :(得分:4)

DisplayMetrics dimension= new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dimension);
        int w = dimension.widthPixels;
        int h = dimension.heightPixels;

      if(h>w){
        //"portrait"
      }
      else{
       //"landscape"
       }

答案 2 :(得分:2)

方向定义哪一侧是宽度或高度。如果你有480x320,那是因为当你拨打display.getWidth()时,你已经处于横向模式。我不知道这个设备,但是当你以肖像方式握住它时,默认方向可能是风景...

如果您真的需要知道何时有这样的设备,您可以查看当前的方向:

 getResources().getConfiguration().orientation

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