【问题标题】:app's UI is not proper in a 220 dpi screen应用程序的 UI 在 220 dpi 屏幕中不合适
【发布时间】:2017-09-27 16:17:13
【问题描述】:

您好,我是 android 开发新手,这是我的第一个应用程序。

我在地址:app\src\main\res 中创建了这些文件夹,用于支持多个手机和平板电脑屏幕,并将适当的dimens.xml 文件放入其中。

  • 值-ldpi
  • 值-mdpi
  • 值-hdpi
  • 值-xhdpi
  • 值-xxhdpi
  • 值-xxxhdpi
  • 值-sw600dp
  • 值-sw768dp
  • 值-sw800dp

    1. 首先,它们是完整的还是我缺少一些屏幕尺寸?

    2. 其次,我已经在几台设备上测试了该应用程序,它运行良好,并且在所有手机中都有正确的用户界面,但在 Galaxy Grand Prime 上,它具有 5 英寸 540 x 960 像素显示屏,这意味着 220 dpi。这款手机使用 hdpi 尺寸,但 UI 有点乱。

以下图片可能会更好地说明我的观点:

正确的用户界面,如在其他设备中显示的那样

VS

galaxy grand prime 220 dpi 显示屏中的 UI

由于UI在其他设备上完全没问题,我想我应该为那种dpi制作一个特定的dimens.xml文件,所以我制作了values-sw220dp。但在那之后,其他手机使用此尺寸而不是 hdpi 尺寸,问题变得更糟,因为 UI 在 Galaxy 手机中很好,而在其他 hdpi 显示器中不合适。现在我不知道该怎么办了。

谁能帮助我解决这个问题?

最后很抱歉,因为我的英语有缺陷,你可以猜到我不是本地人。

【问题讨论】:

  • 您正在混合两种资源选择器:mdpi、ldpi 等基于 dpi 桶,但 sw600dp 表示“最小屏幕宽度为 600dp 的设备”所有手机的屏幕最小边大于 220dp .
  • 我是为平板做的,那我应该怎么做才能支持平板屏幕呢?
  • 我删除了 sw600dp 、 sw768dp 和 sw800dp xml,但在上述设备上仍然不合适

标签: android xml user-interface


【解决方案1】:

它们是完整的还是我缺少一些屏幕尺寸?

如果您阅读我在答案末尾提到的指南,您会发现定义资源文件夹的可能性非常多。我认为没有人会想要实现所有这些。

通常,您查看您的应用程序,然后决定可能要支持的三种或四种屏幕尺寸。我认为“sw220dp”很重要,如果只是为了显示您的应用需要更多空间的消息:-)。

所以很可能有三到五个布局文件夹(sw220dp、sw320dp、也许是 sw480dp、sw600dp、也许是 sw820dp)。如果您需要与方向相关的布局,那么这个数字将是原来的两倍。 (为什么?这在下面链接的指南中有很好的解释)

您已经知道有不同类型的资源。其中一些不依赖于屏幕分辨率(例如布局文件),一些依赖于屏幕分辨率(可绘制资源)。

因此,首先您决定要支持哪些屏幕尺寸。假设它们是“手机”、“平板电脑”和“220dp”。您创建三个同名的布局文件“my_activity.xml”并将它们放在三个文件夹中

  • 对于非常小的窗口:res/layout-sw220dp
  • 手机端:res/layout-sw320dp
  • 对于平板电脑:res/layout-sw600dp

顺便说一句,“sw”代表最小宽度,即屏幕的最小长度,无论当前是什么方向。

现在假设您创建了三个不同的布局文件,它们都包含ImageView,如下所示:

<ImageView
    android:layout_width="24dp" 
    android:layout_height="24dp" 
    android:src="@drawable/my_picture" />

这就是屏幕分辨率发挥作用的地方:24dp 是“与密度无关的像素”中的大小值。它将根据设备的屏幕分辨率解决。所以你需要不同版本的my_picture.png,为此你需要不同的drawables文件夹。它们以屏幕分辨率的不同类别命名,因此运行时知道要选择哪个 png 文件:

  • res/drawable/ldpi(虽然我在某处读过,但您可以跳过,因为图片会很好地从 hdpi 缩小)
  • res/drawable(这里是 res/drawable-mdpi 的资源以及分辨率无关紧要的每个可绘制资源,例如通过 xml 文件定义的可绘制资源)李>
  • res/drawable-hdpi
  • res/drawable-xhdpi
  • res/drawable-xxhdpi
  • res/drawable-xxxhdpi

有用的链接:

Providing Resources

Supporting Multiple Screens

【讨论】:

  • 对不起,我没听明白。首先,我的应用程序中没有任何可绘制对象(顺便说一句,我已经知道如何处理它们)。其次,您建议将 mdpi、ldpi 等类型更改为 sw220dp、sw320dp 等并使用不同的布局而不是不同的尺寸?您提到的这 5 种尺寸是否足以支持所有屏幕尺寸?
  • @Mohsen Hesa​​ri - -mdpi 等文件夹用于可绘制文件,而不用于布局文件。关于布局文件:您还可以组合具有不同尺寸值的不同布局文件。为了让你的应用在所有屏幕上看起来都很好,布局文件中的内容也非常相关。这是一个以最佳方式组合所有这些部分的问题。是的,一个方向的 5 个屏幕尺寸就足够了(或者从可维护性的角度来看甚至可能太多了)阅读链接的指南并开始您自己的实验:)
猜你喜欢
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多