如何获取屏幕宽度和高度

55

我尝试使用以下代码来获取Android应用程序开发中的屏幕宽度和高度:

Display display = getWindowManager().getDefaultDisplay(); 
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();

但我在我的display上遇到了NullPointerException,为什么?怎样获取屏幕的宽度和高度呢?


1
你把这三行代码放在哪里?也许默认的显示器在你的代码执行时还没有准备好。请发布代码上下文。尝试在Activity的onCreate()中调用它。 - Kevin Yuan
1
你是在一个帮助类中尝试做这个,而不是在一个Activity中吗? - Howler
2
如果其中一个解决了您的问题,您应该接受一个答案。 - areyling
2
如果其中一个答案被标记为正确的话,那就太好了。 - Allen Edwards
不要使用getWindowManager().getDefaultDisplay(),因为你无法保证它是否是当前的显示器。 - EpicPandaForce
14个回答

1
    int scrWidth  = getWindowManager().getDefaultDisplay().getWidth();
    int scrHeight = getWindowManager().getDefaultDisplay().getHeight();

1
你好,你的帖子被标记为“低质量”,可能是因为它仅包含代码。如果你能提供关于如何以及为什么这个答案回答了问题的解释,那么你的回答将会大大改善。 - Ben
它会返回以像素为单位的宽度和高度,或者不返回。 - Zar E Ahmer

0

以下答案支持API级别低于和高于10

 if (Build.VERSION.SDK_INT >= 11) {
            Point size = new Point();
            try {
                this.getWindowManager().getDefaultDisplay().getRealSize(size);
                screenWidth = size.x;
                screenHeight = size.y;
            } catch (NoSuchMethodError e) {
                 screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
                 screenWidth=this.getWindowManager().getDefaultDisplay().getWidth();
            }

        } else {
            DisplayMetrics metrics = new DisplayMetrics();
            this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
            screenWidth = metrics.widthPixels;
            screenHeight = metrics.heightPixels;
        }

0
Display display = getActivity().getWindowManager().getDefaultDisplay(); 
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
Log.d("Tag", "Getting Width >> " + screenWidth);
Log.d("Tag", "Getting Height >> " + screenHeight);

在我的应用程序中,这个运行正常。


0

使用函数的另一种方法

private int[] getScreenSIze(){
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int h = displaymetrics.heightPixels;
        int w = displaymetrics.widthPixels;

        int[] size={w,h};
        return size;

    }

在按钮点击事件或者您的创建函数中添加以下代码。
int[] screenSize= getScreenSIze();
        int width=screenSize[0];
        int height=screenSize[1];
        screenSizes.setText("Phone Screen sizes \n\n  width = "+width+" \n Height = "+height);

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