0

我最近遇到了一个无法解决的问题。。

我已经为我在三星 Galaxy Note 8.0 中运行的平板电脑制作了一个简单的应用程序。我已经将布局设置为在某个地方放置一些文本视图。我在 xml 中使用 dp 作为边距和 sp 作为文本大小对其进行编码。宽度和高度布局设置为 wrapcontent。但是当我在我的朋友三星 Galaxy Tab 2 7.0 中运行它时,布局与我在设备中看到的不匹配。当我尝试在 10 英寸模拟器中运行它时,也会发生同样的事情。

我的布局文件夹使用了 layout-sw600dp。

为什么我的屏幕布局是这样的?我虽然通过使用 layout-sw600dp 来调整自己的布局..还是我错了?

我已经阅读了有关不同屏幕尺寸支持的 android 文档,到目前为止,我发现使用 layout-sw600dp 是一个很好的解决方案。

我已经使用以下方法检查了设备 dpi:

Display display = getWindowManager().getDefaultDisplay();
           DisplayMetrics outMetrics = new DisplayMetrics ();
            display.getMetrics(outMetrics);

            float density  = getResources().getDisplayMetrics().density;
            float dpHeight = outMetrics.heightPixels / density;
            float dpWidth  = outMetrics.widthPixels / density;
4

2 回答 2

0

每个设备都有不同的像素比、不同的 dpi、不同的屏幕尺寸等等。转到此链接,阅读它,您将知道如何管理不同的设备布局。

Android - 支持多屏

于 2013-11-02T14:10:07.647 回答
0

如果要在应用启动时查看屏幕英寸大小,可以通过以下两种方法计算英寸,但我认为第二种更精确。

public static float getScreenInchSizeByDensityDpi(Context context) {
    DisplayMetrics dm = context.getResources().getDisplayMetrics();
    double x = Math.pow((double)dm.widthPixels / (double)dm.densityDpi, 2);
    double y = Math.pow((double)dm.heightPixels / (double)dm.densityDpi, 2);
    double screenInches = Math.sqrt(x + y);

    return (float) screenInches;
}

public static float getScreenInchSizeByXYDpi(Context context) {
    DisplayMetrics dm = context.getResources().getDisplayMetrics();
    double x = Math.pow((double)dm.widthPixels / (double)dm.xdpi, 2);
    double y = Math.pow((double)dm.heightPixels / (double)dm.ydpi, 2);
    double screenInches = Math.sqrt(x + y);

    return (float) screenInches;
}
于 2014-12-02T08:38:15.930 回答