【问题标题】:UI for different screen densities不同屏幕密度的 UI
【发布时间】:2015-09-29 03:34:04
【问题描述】:
我不了解旨在支持多种屏幕密度的资源配置限定符的好处,例如:
对于 mdpi,您放置一个 100x100 像素的图标
对于 hdpi,您放置一个 150x150 像素的图标
对于 xhdpi,您放置一个 200x200 像素的图标
然后您在尺寸为 100 x 100 dip 的 imageView 中显示此图标,该图标已在不同尺寸和密度的多个屏幕上保持其尺寸。
我们为什么不直接使用上面资源中的 xhdpi 版本的图标作为基线资源,以便它在更高密度的屏幕上显示得很好、更流畅,同时 android 会重新调整它以适应更低的密度无论如何 xhdpi 版本的图标就足够的屏幕?
希望我的解释清楚,谢谢
【问题讨论】:
标签:
android
resources
screens
【解决方案1】:
这样做的主要原因基本上是让您为每个屏幕尺寸定义多个布局,并可以将“相同”图形从屏幕尺寸更改为另一个,让我举个例子:
想象一下,你有一个活动,它的布局是为 mdpi 和 hdpi 屏幕定义的。在 hdpi 屏幕中,您会显示一个包含文本的完整横幅(假设此横幅的资源是 R.drawable.topbanner),但是此横幅在调整大小后无法在 mdpi 等较小的屏幕上显示,因此您决定制作此横幅的定时版本,用于具有相同资源 id (R.drawable.topbanner) 的 mdpi 屏幕,例如,您在其中删除了一些文本。现在系统将根据屏幕大小决定使用哪一个。
【解决方案2】:
当然欢迎您发送 -xhdpi drawables 并根据需要对 Android 进行下采样。我希望许多开发人员都这样做。
但是,请理解,您无法再控制您的可绘制对象在较低密度下的外观。您信任 Android 的可绘制重采样算法,该算法:
以不同的密度运送替代艺术品可为您提供更多的控制权,但需要更多的开发工作和更大的 APK 大小。
如果您不想要该控件,那是您的选择。同时,请不要吝啬其他开发人员希望拥有这种控制权并在低密度设备上获得可能更高质量的结果。