安卓屏幕方向和尺寸问题

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。


我有点困惑...你说分辨率是480w x 320h,然后又问320是高度吗?你到底想要弄清楚什么? - FoamyGuy
设备实际尺寸为480w x 320h,但当我使用这段代码时,我得到了320w x 480h。 - MBH
1
好的,我认为在你最后一句中你误把 "height" 用成了 "width"。不管怎样,在这个特定的设备上他们可能是这样做的,当你正常握住手机时它实际上以横向模式显示而不是竖向模式。尝试运行一个强制方向为竖屏的活动,看看它是否会侧向显示,如果是这样,那么你可以确定这就是问题所在。 - FoamyGuy
3个回答

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

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

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);

Activity是指您想要获取屏幕尺寸的Activity实例。

请记住:当您的设备处于横向方向时,宽度大于高度。当它处于纵向方向时,宽度小于高度。

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


2
方向定义了宽度和高度的哪一边。如果你得到了480x320,那是因为当你调用display.getWidth()时已经处于横屏模式。我不知道这个设备,但很可能默认方向是横屏,当你把它竖起来时... 如果你真的需要知道你是否在使用这样的设备,你可以检查当前的方向:
 getResources().getConfiguration().orientation

将其与使用传感器计算实际物理方向的OrientationEventListener比较,以度数表示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接