【问题标题】:Android supporting all tablets - categorize drawables and layouts支持所有平板电脑的 Android - 对可绘制对象和布局进行分类
【发布时间】:2023-03-24 11:59:01
【问题描述】:

我在 stackoverflow 中看到了很多讨论这个问题的线程(例如 thisthisthis),并且我已经阅读了有关支持多屏幕和设计的文档。但是我仍然不清楚drawables的文件夹结构和不同屏幕的布局

我正在开发一款支持安卓手机和平板电脑的应用。我的项目显示了一些图像,这些图像需要在所有可能的 android 设备中以高质量显示。我需要告诉我的设计师针对所有这些分辨率进行设计。

从文档看来,我应该为以下分辨率添加可绘制对象(可绘制文件夹名称在末尾给出),

1) 240 x 320  - Phone LDPI  -> drawable-ldpi

2) 320 x 480  - Phone MDPI  -> drawable-mdpi

3) 480 x 800  - Phone HDPI  -> drawable-hdpi

//Now for tablets

4) 1024x600   - Tablet LDPI -> ??

5) 1280x800   - Tablet MDPI -> ??

6) 1536x1152  - Tablet HDPI -> ??

7) 2560x1600  - Tablet XHDPI-> ??

从支持multiple screens documentation,看来我可以使用像

这样的文件夹了
1) drawable-sw600dp  ( a 7” tablet (600x1024 mdpi).)
2) drawable-sw720dp   (a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

但是分辨率在 1536x1152、2560x1600 等范围内的平板电脑呢?10' 分辨率范围(720 x 1280 等)对他们来说似乎很小。我的客户有一台分辨率为 2560×1600 的 Nexus 10,我想要我的应用看起来很完美..

我知道,九个补丁图像,使用wrap_content 的布局和其他类似的良好做法。但是对于这个项目,我有一些图像,根据要求,应该在所有常见的屏幕上都能看到清晰锐利的图像,我至少在我的包中需要这些图像的多个版本。

那么我应该向设计师提及什么和什么解决方案?以及如何将它们分类为提供正确文件夹名称的捆绑包。

【问题讨论】:

标签: android screen-resolution resourcebundle


【解决方案1】:

实际上,平板电脑是按尺寸而非 dpi 分类的,即 7 英寸标签是 drawable-large,而 10 英寸标签是 drawable-xlarge。现在您可以再次按 dpi 进行分类,例如 drawable-large-hdpi,这意味着它是一个 7" 的标签,具有高密度。

您可以使用SW 最小宽度概念来定位它,请参阅Application Skeleton to support multiple screen 并进行相同的计算。

平板电脑分为两种尺寸。

7" (1024X(600-48(导航栏))) = 1024 X 552 (drawable-large)
10" (1280X(800-48(导航栏))) = 1280 X 752 (drawable-xlarge)

对于 2560x1600,使用公式计算 SW dp

px=设备宽度
dpi=设备密度

给定公式

px = dp * (dpi / 160)

如果有 px 的值,则交换公式

dp = px / (dpi / 160)

所以 drawable-swxxxdp 会完成这项工作

【讨论】:

  • 另见开发者网站DeclaringTabletLayouts
  • 所以我想说,我应该告诉设计师设计 1) 1024 x 768 (drawable-large 文件夹) 2) 1280 x 800 (drawable-xlarge 文件夹) 3) 2560x1600 (使用 drawable- xlarge-xhdpi 文件夹)。它会覆盖几乎所有屏幕吗?
  • 不,很难覆盖所有的 Tab 屏幕,因为有很多。查看我的更新答案
  • 还有一个疑问,在纵向/横向模式下,nexus 10 选项卡(我的意思是任何具有 2560 x 1600 的选项卡)分辨率的导航(状态栏高度?)是什么?有什么方法可以使用任何计算找到它?
  • 这是我当前的实现。我有 3 组用于绘制的文件夹。 drawable、drawable-sw600dp-mdpi(x 4 密度)、drawable-sw720dp-mdpi(x 4 密度)分别用于手机、7" 和 10" 选项卡。共有 12 个图像文件夹。但我的 10" 银河选项卡 GT-P7500 (1280x800) 似乎从 sw720dp-XXHDPI 文件夹而不是 sw720dp-MDPI 文件夹中拾取图像。但是,当我只使用一组没有 swXXXdp 限定符的文件夹时,它会从 DRAWABLE-MDPI 文件夹中正确拾取. 可能的问题是什么?
【解决方案2】:

AFAIK 设备显示有两种变量:像素密度和屏幕尺寸。 两者在理论上是独立的,尽管在市场上两者从 低端高端 设备都有所不同。

不同位图分辨率和细节级别的像素密度要求(例如 36X36 到 96X96 图标)。

屏幕尺寸需要更好地利用空间(例如手机的多活动布局,平板电脑的组合碎片布局)。不像像素密度那么重要,但拥有它还是不错的,因为平板电脑用户可能会发现手机布局过于平淡,而且浪费了屏幕空间。

所以:

  • 要覆盖大多数像素密度,您必须有不同的 versions of drawablesldpi,mdpi,hdpi and xhdpi。更喜欢九个补丁的drawable,这些在任何地方都适合。

  • 要覆盖大多数屏幕尺寸,您必须有不同的 layout arrangementsresponsive layout design small,large and xlarge 值。此外,有时可以使用不同的纵向和横向布局。

  • Android 也允许您混合配置组合。例如。 drawable-large-hdpi

  • 不惜一切代价避免硬编码像素坐标和尺寸,使用密度或百分比。

  • 拥有一个灵活的九个补丁的可绘制对象要好,而不是为不同的屏幕尺寸使用不同的可绘制对象。

【讨论】:

    【解决方案3】:

    我们也可以将 xxhdpi 用于 drawable-xxhdpi 等可绘制对象

    xxhdpi(480dpi,Android 4.1 或更高版本)

    或参考以下链接中的“Android表格列”

    http://en.wikipedia.org/wiki/Smartphone

    【讨论】:

      【解决方案4】:

      我用的是:

      • 一个布局文件夹(或第二个:layout-land)
      • 一些带有 dimens.xml(-hdpi、-large、-xlarge)的值文件夹,用于不同的大小、字体等。
      • drawables:-hdpi 与大多数图像,它们按比例缩小以适用于所有手机; -large 用于 7 英寸平板电脑;-xlarge 用于 10 英寸平板电脑。或者只是 -hdpi 和 -large。

      我可能会验证这种方法,即使用 -sw600dp 和 -sw720dp,但现在它可以工作。

      【讨论】:

        【解决方案5】:

        你好,我认为 android drawable 分辨率是-

        10" - 1280 X 800

        7" - 1024 X 600

        xhdpi - 960 x 720

        hdpi - 800 X 480

        mdpi - 480 X 320

        【讨论】:

        • 密度与分辨率关系不大
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-10
        • 2011-08-04
        • 1970-01-01
        • 2013-01-19
        • 2017-03-22
        • 1970-01-01
        相关资源
        最近更新 更多