有效地测量可用屏幕

时间:2014-03-30 14:44:20

标签: android dimensions

我需要找到一种方法来实际获取设备屏幕的尺寸。我现在已经尝试了很长时间,在那里我找不到找到可绘制屏幕像素的高度和宽度的方法。

以下是我现在正在使用的代码:

SCREEN_HEIGHT = metrics.heightPixels - unusable_height;

通过以下方式找到不可用的高度:

    //Calculate action Bar Height
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)){
        unusable_height = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }

    //Calculate the navigation bar height
    int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        unusable_height = unusable_height + getResources().getDimensionPixelSize(resourceId);
    }

这在我的平板电脑中很有效,但是在我的手机中,由于屏幕上的东西被抽出,所以屏幕高度太大。 (我根据屏幕高度计算所有尺寸)。这是横向模式。

有任何帮助吗?如何知道从操作栏末尾到我不能再绘制的像素总数。?

在我的手机中,导航栏不会旋转,因此它会保持在底部处于纵向模式的位置。所以底部是屏幕的结尾。但是,在我的平板电脑中,导航栏会旋转并放在屏幕的底部。

1 个答案:

答案 0 :(得分:0)

我找到了绕过这个问题的方法。但它并不整洁。我在这里张贴以防万一其他人需要它。通过将这些变量从LayoutParams设置为MATCHPARENT的布局或视图中获取宽度和高度,可以获得宽度和高度。当然这个视图需要设置为setContentsView,所以它应该像主布局一样。但是,只有在已经绘制视图时才会抛出非零值,这意味着您无法在onCreate或onResume等方法中获取其值。

从好的方面来说,它应该总是有效,而且很简单。