Android:ScreenSize支持8英寸和7英寸屏幕

时间:2013-11-02 13:52:40

标签: android android-layout android-screen-support

我有一个我最近无法解决的问题..

我为平板电脑制作了一个简单的应用程序,我在三星Galaxy Note 8.0中运行..我已经设置了布局,在某个地方放置了一些文本视图..我用xp编写它,使用dp作为边距,sp编写文本尺寸。 width和height布局设置为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;

2 个答案:

答案 0 :(得分:0)

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

Android - Supporting Multiple Screen

答案 1 :(得分: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;
}