获取与未指定SDK时相同的窗口测量值

时间:2011-03-05 06:11:28

标签: android

我的应用程序中有一个窗口(包含一个webview,其中一些元素通过javascript根据窗口大小调整大小)。当我在没有目标SDK的情况下运行应用程序时,一切都是完美的。结果来自:

getWindowManager().getDefaultDisplay().getMetrics(dm);
x = dm.widthPixels;
y = dm.heightPixels;

...与我运行目标sdk为4+的应用程序时有很大不同。

从我运行应用程序时没有目标sdk的大小会使我的webview中的元素大小调整,但getMetrics()报告窗口明显小于它。 (我最终得到了一个填充窗口的webview,但是我的所有元素都在左上角被压扁了。)

如何在指定目标sdk时获取完整视图大小,为什么数字如此不同?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

如果未指定目标SDK,Android会以仿真模式呈现窗口并自动调整屏幕密度。指定目标后,窗口管理器将报告与密度无关的像素,以便您获得未针对设备分辨率进行缩放的测量。要获得实际像素大小,您可以执行以下操作:

    getWindowManager().getDefaultDisplay().getMetrics(dm);
    density = dm.densityDpi;
    x = (int) dm.widthPixels * 160 / density;
    y = (int) dm.heightPixels * 160 / density;