【问题标题】:Android : ScreenSize Support for 8 and 7 inch screenAndroid : ScreenSize 支持 8 和 7 英寸屏幕
【发布时间】:2013-11-02 13:52:40
【问题描述】:

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

我已经为我在三星 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;

【问题讨论】:

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


    【解决方案1】:

    每个设备都有不同的像素比、不同的 dpi、不同的屏幕尺寸等等。去这个链接,阅读它,你就会知道如何管理不同的设备布局。

    Android - Supporting Multiple Screen

    【讨论】:

    • 我已经读了几遍了.. 我的理解是我需要为不同的尺寸提供不同的布局.. 但是我真的需要为 7 英寸和 8 英寸的屏幕提供不同的布局吗?在我的xml 我使用 100dp 的 layout_margin(示例)..
    • @iwalyfa - 一切都很重要,检查设备的 dpi,.,.如果它们不同,那么您需要不同的布局文件夹,检查像素比率,当涉及到 android 布局时,一切都很重要
    • 我已经编辑了我的帖子..我已经检查了设备 dpi..我需要不同的布局吗?当我考虑它时,这意味着我需要提供很多布局适合不同的屏幕尺寸..
    • 是的,这实际上是一个令人头疼的问题,许多 7 英寸设备可能具有不同的 dpi,因此会发生布局更改,.,尝试为您认为您的应用程序可以运行的设备创建一些布局文件夹,。如果你反编译流行的应用程序,你会看到很多布局文件夹
    • 我明白了.. 谢谢你的建议.. 我想我必须至少为一些不同的屏幕尺寸做一些布局.. 最后一个问题,做很多布局会使应用程序变慢吗?
    【解决方案2】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多