Android DisplayMetrics 在 ICS 上返回不正确的屏幕尺寸(以像素为单位)

2023-12-03

我试过这个....

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int fullscreenheight = metrics.heightPixels;
int fullscreenwidth = metrics.widthPixels;

and....

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Gnex 的显示屏为 720×1280。返回的宽度/高度结​​果(当然取决于方向)永远不会是 1280。我认为这可能与 Ice Cream Sandwich 中的屏幕导航栏有关,所以我将其隐藏:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

...然后启动一个线程,连续记​​录屏幕尺寸高度/宽度。即使 ICS 导航栏完全消失......屏幕尺寸也永远不会报告 1280 值。我会得到这样的数字:

width  = 720
height = 1184

如何在ICS中获得真实的设备屏幕分辨率?

我需要这个值的原因是因为我的应用程序播放视频,并且我希望当设备处于横向时视频占据整个屏幕。现在我知道您在想什么,为什么不直接为视频视图指定高度/宽度的“match_parent”值呢?原因是因为我的视频有多种宽高比,我希望能够根据屏幕的整个宽度计算正确的视频大小。


从艾哈迈德的回答来看,这是没有错误的完整代码:

    int width = 0, height = 0;
    final DisplayMetrics metrics = new DisplayMetrics();
    Display display = getWindowManager().getDefaultDisplay();
    Method mGetRawH = null, mGetRawW = null;

    try {
        // For JellyBean 4.2 (API 17) and onward
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
            display.getRealMetrics(metrics);

            width = metrics.widthPixels;
            height = metrics.heightPixels;
        } else {
            mGetRawH = Display.class.getMethod("getRawHeight");
            mGetRawW = Display.class.getMethod("getRawWidth");

            try {
                width = (Integer) mGetRawW.invoke(display);
                height = (Integer) mGetRawH.invoke(display);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } catch (NoSuchMethodException e3) {  
        e3.printStackTrace();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android DisplayMetrics 在 ICS 上返回不正确的屏幕尺寸(以像素为单位) 的相关文章

随机推荐