Android UI(布局+资源)针对不同屏幕尺寸和不同密度的适配问题。

6

首先,我已经在SO上看到了所有可用的答案,但是没有得到我想要问的确切内容,因此我在这里写下这个问题,这可能也会帮助其他人。

我知道的

为了支持多种密度,我们应该在drawable文件夹中提供不同的资源(图像),并考虑以下因素:

ldpi    :  0.75x
mdpi    :  1x
hdpi    :  1.5x
xhdpi   :  2x
xxhdpi  :  3x
xxxhdpi :  4x

例如,如果我们有一个在 mdpi 中大小为 100x100 像素的图像,则其他密度的图标大小将为,
ldpi    :   75X75 px
mdpi    :   100X100 px
hdpi    :   150X150 px
xhdpi   :   200X200 px
xxhdpi  :   300X300 px
xxxhdpi :   400X400 px

我的问题:

  1. 由于同一像素密度下可能存在多个屏幕分辨率,因此在为mdpi设计图标时应考虑哪个分辨率?例如,如果设计师在Photoshop中创建屏幕,然后将图标裁剪出来,那么应该考虑mdpi的哪个屏幕分辨率?

  2. 相同的图像是否会显示在具有相同密度的所有屏幕分辨率上?例如,在hdpi中,我们有从480X600到1920X1200的分辨率,那么这两个分辨率上是否会显示相同的图像?在1920X1200分辨率上,它不会看起来比480X600小吗?

  3. 如果我们想要设计一个适合所有屏幕大小的自定义背景图像,应采用什么方法?如果我们想要为hdpi设计一个背景图像,那么应该使用哪个分辨率进行设计?(480X600还是1920X1200)。我认为它不能在所有屏幕尺寸上完美地适应。

  4. 使设计具备分辨率独立性的更好方法是什么?

  5. 这里的设计师们所做的是选择一个分辨率,然后在那个分辨率下设计整个应用屏幕,并切割psd文件以获取图标。但是这种方法使设计具有分辨率依赖性,在其他分辨率的其他屏幕上效果不佳。如何实现分辨率独立?

谁知道为安卓创建分辨率独立UI的好方法?

谢谢。


请查看此链接:https://dev59.com/bGIj5IYBdhLWcg3wy4DH#19875228 - Haresh Chhelana
@Haresh,你能否详细说明问题中的所有内容,并帮助我澄清疑惑?我觉得我缺少了一些理解。 - gprathour
2个回答

2

根据我的经验,我所学到的是:

  1. Phones

    hdpi - 480 x 800
    xhdpi - 768 x 1280
    xxhdpi - 1080 x 1920
    xxxhdpi - 1440 x 2560
    

    Tables large-mdpi - 600 x 1024 xlarge-mdpi - 800 x 1280

  2. For tablets design different cutouts.

  3. Get it created for all the resolutions you want to support.
  4. Getting cutouts for most famous resolution for each category.
  5. Get cutouts for one resolution from each category and different cutout images for tablets.

0

这里是关于前3个问题的答案。请看以下:

  1. 为mdpi设计图标时,您应该将320x480 mdpi分辨率作为基准标准考虑。根据此,您可以为不同的屏幕分辨率调整图像大小。

  2. 如果您以mdpi为UI基线,则需要根据以下情况/标准调整图像大小:0.75x:1x:1.5x:2x:3x:4x。

  3. 设计背景图像,您需要480x800 hdpi图像大小。因为大多数hdpi设备都在这个尺寸上。


我认为320*480分辨率不适合图标。请参阅developer.android.com中的“支持多屏幕”文档。 - Arash GM
实际上,大多数mdpi设备都属于这个类别。因此,根据我的了解,将此分辨率视为mdpi的基准是完全可以接受的方法。 - VVB
我知道你在第二点提到的那个东西。但我的问题是,假设我们按照320X480 mdpi分辨率创建了一张图片,那么如果我们想要获得1280x768 mdpi分辨率的图片,怎么办?我们需要为每个分辨率单独创建图像吗?还是设计用于320X480 mdpi的相同图像将显示为1280X768分辨率?因为两者都是mdpi? - gprathour
你可以在1280x768 mdpi分辨率设备上使用相同的图像。但是,在该设备上它会被拉伸,所以最好为不同的屏幕分辨率创建图像。 - VVB
由于有超过12个分辨率,所以您想说我们应该为每个分辨率创建这么多图像吗?那你认为我们会把它们放在哪里呢?比如说,如果只有mdpi的4个分辨率,我们创建了4个不同的图像,那么我们应该把它们放在哪里呢?所有的图像都不能使用相同的名称放置在同一个文件夹中。 - gprathour
你需要在谷歌上搜索如何将不同分辨率的图片映射到不同的drawable文件夹中。实际上,你上面的评论并不是这个问题的一部分,否则你需要编辑你的问题。 - VVB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接