android 获取屏幕分辨率


今天遇到一个问题,我做出来的效果和设计师给的标注总是差几个像素,有个差1个像素,有的差5个像素,调了好久,就是不知道为啥,后来我静下心来好好想了想,计算了一下我的各个高度,我发现问题的所在了:

     DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int widthPixels = dm.widthPixels;
        int heightPixels = dm.heightPixels;

我们用这种方式获取到的屏幕高度是包括: 状态栏(显示电池信息的那一栏)。而我们应用显示内容的话,这部分是不能显示内容的,但是我又算上了,所以总是差点,原因就在这里。


    Rect rect = new Rect();
                Window win = TestStatusActivity.this.getWindow();
                win.getDecorView().getWindowVisibleDisplayFrame(rect);
                int statusBarHeight = rect.top;
                int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop();
                int titleBarHeight = contentViewTop - statusBarHeight;
                System.out.println(statusBarHeight + ", " + titleBarHeight);

用这种方式得到了状态栏的高度和标题栏的高度。


android 获取屏幕分辨率_第1张图片






你可能感兴趣的:(android 获取屏幕分辨率)