UI 适用于不同的屏幕密度

UI for different screen densities

我不明白为支持多种屏幕密度而设计的资源配置限定符的好处,例如:

然后您在尺寸为 100 x 100 dip 的 imageView 中显示此图标,它已经在不同尺寸和密度的多个屏幕上保持其尺寸。

为什么我们不直接使用上面资源中图标的 xhdpi 版本作为基准资源,这样它就可以在更高密度的屏幕上显示得更好更流畅,同时 android重新缩放它以适应较低密度的屏幕,而图标的 xhdpi 版本就足够了吗?

希望我的解释清楚,谢谢

当然欢迎您只运送 -xhdpi 个可绘制对象并根据需要进行 Android 下采样。我希望许多开发人员都这样做。

但是,请理解您无法再控制可绘制对象在较低密度下的外观。您信任 Android 的可绘制重采样算法,该算法:

  • 将针对低 CPU 和内存使用比桌面 OS 图形工具进行更多优化,因此质量可能不那么好;和

  • 可能因 AndroidOS 版本而异

以不同的密度发送替代图稿可以让您有更多的控制权,尽管需要更大的开发工作量和更大的 APK 大小。

如果您不想要该控件,那是您的选择。同时,请不要嫉妒其他开发人员希望拥有该控制权并在低密度设备上获得更高质量结果的愿望。

这样做的主要原因基本上是让您可以为每个屏幕尺寸定义多个布局,并且可以将 "SAME" 图形从一种屏幕尺寸更改为另一种屏幕尺寸,让我举个例子: 假设您有一个 activity,其布局是为 mdpi 和 hdpi 屏幕定义的。在 hdpi 屏幕中,您显示了一个完整的横幅,里面有文字(假设该横幅的资源是 R.drawable.topbanner),但是调整大小后,这个横幅在像 mdpi 这样的小屏幕上显示起来不舒服,所以您决定制作此横幅的定时版本适用于具有相同资源 ID (R.drawable.topbanner) 的 mdpi 屏幕,例如您在其中删除了一些文本。现在系统将根据屏幕尺寸决定使用哪一个。