android - 应用程序的 UI 在 220 dpi 屏幕上不合适

标签 android xml user-interface

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

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

  • 值(value)观-ldpi
  • 值(value)观-mdpi
  • 值-hdpi
  • 值-xhdpi
  • 值-xxhdpi
  • 值-xxxhdpi
  • 值-sw600dp
  • 值-sw768dp
  • 值-sw800dp

    1. 首先,它们是否完整,或者我是否遗漏了一些屏幕尺寸?

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

下面的图片可能会使我的观点更好:

proper UI , as it is shown in other devices

正确的用户界面,就像在其他设备上显示的那样

对比

UI in galaxy grand prime 220 dpi display

galaxy grand prime 220 dpi 显示屏中的 UI

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

谁能帮我解决这个问题?

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

最佳答案

are they complete or i'm missing some screen sizes?

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

通常,您会查看您的应用,然后决定可能要支持的三到四种屏幕尺寸。我认为“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,为此您需要不同的可绘制文件夹。它们以屏幕分辨率的不同类别命名,因此运行时知道要选择哪个 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

关于android - 应用程序的 UI 在 220 dpi 屏幕上不合适,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46452706/

相关文章:

xml - REST - Web 服务响应 - MIME 类型?

android - Xamarin Forms MasterDetail 页面导航导致 Android 崩溃 [致命信号 6 (SIGABRT),代码 -6],适用于 iOS 和 UWP

android - 在 android 上使用 phonegap 设置 Urban Airship 推送通知

c# - 从 Web.config 读取 Hibernate 属性

SQL Server 查询元素值的 xml 属性

WPF UI 未在属性更改时更新

java - Android:如何使 ExpandableListView 中的子行不可点击?

java - 是否可以删除 JInternalFrame 中的小下拉箭头?

android - android中具有相同分辨率但屏幕尺寸不同的设备的布局

android - 在基于 Lollipop 的手机上使用 Kitkat 的 AlertDialog 风格