Android:将屏幕分辨率/像素作为整数值

时间:2010-05-25 07:03:26

标签: android resolution

这是一个非常简单的问题,我没有找到答案:/ 如何快速访问屏幕分辨率(宽度,高度)作为整数值?

我试过这个,但它在我的模拟器上总是显示零:

DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels / 2;

在我的情况下,我想动态创建一个包含tableRows的表,每个表包含两个cols。这个cols all将填满屏幕的一半宽度。

有人能给我一个暗示吗?

5 个答案:

答案 0 :(得分:35)

trashkalmar答案是正确的。

但是,结果将特定于活动上下文。如果您想要整个设备的屏幕分辨率:

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;

请注意,结果还取决于当前的设备方向。

答案 1 :(得分:18)

您可以通过以下方式获取屏幕指标:

Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();

答案 2 :(得分:5)

1.仅使用此内部活动来获取屏幕宽度和高度像素。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay()
    .getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

2.这也可以使用但需要Api级内联检查

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
    display.getSize(size);
    int width2 = size.x;
    int height2 = size.y;

} else {
    int width2 = display.getWidth();
    int height2 = display.getHeight();
}

3.当您没有活动但有上下文时使用此

WindowManager wm = (WindowManager) context.getSystemService(
            Context.WINDOW_SERVICE);
Display display1 = wm.getDefaultDisplay();
Point size1 = new Point();

int width1;
int height1;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {

    display1.getSize(size1);
    width1 = size1.x;
    height1 = size1.y;

} else {
    width2 = display.getWidth();
    height2 = display.getHeight();
}

答案 3 :(得分:4)

我使用以下内容:

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

没有麻烦,没有大惊小怪,只有2个类变量

答案 4 :(得分:3)

最简单的方法是实施onSizeChanged。您可能获得值0,因为视图尚未初始化。例如,您无法在View构造函数中调用上述代码。