为什么不在 Android 开发中只使用最高分辨率的图像?



当我们在Android布局中使用图像时,ImageView的高度和宽度通常设置为dp,所有屏幕分辨率都相同。在Android开发的早期,分辨率越来越高,分辨率较低的图像被放大,看起来并不好。但现在分辨率基本稳定。如果我们只使用最高分辨率的图像,它将在较低分辨率的屏幕上缩小,并且仍然看起来不错。那我们为什么不只使用最高分辨率的图像,而不是为每个图像提供 4-5 个分辨率版本呢?有什么技术优势吗?

没有什么能阻止您只使用高分辨率图像 - 但有一些陷阱。

假设您的资源中有一个要在屏幕上显示的高质量图像。您检查Android仪表板并确定大多数屏幕都是normal,密度xhdpi。这是否为您提供了足够的信息,说明资源中的图像应该有多大,以便在野外的每个屏幕上看起来都不错?

好吧,安全总比后悔你对自己喃喃自语要好,同时决定将海报大小的图像留在你的资源中。图像是,比如说,70MB。您的APK大小急剧增加,但谁在乎,对吧?

接下来,编写一些代码来显示图像。您喜欢在旧的低端设备上进行测试。如果它适用于这些,它应该适用于您的品牌打屁股新的三星 S9。您运行该应用程序,并收到内存不足错误。猜猜有些设备无法处理这么大的图像,去想办法。

所以你做了一些谷歌搜索,并偶然发现了有效地加载大位图。您应用子采样,瞧,图像加载。现在唯一的问题是弄清楚图像实际显示的内容,因为压缩完全扭曲了其原始质量。

所以你回到原始图像,做一些魔法,用10MP制作一个更小但仍然可行的图像。在较旧的设备上,加载可能仍会失败,因此您将子采样保留在内,但压缩现在不那么严重。完成并尘埃落定!

几天后,一份QA报告称,该图像在Android TV上是无法理解的。猜猜它又回到了绘图板...

Android碎片化是一件大事。以下是屏幕兼容性概述的摘录:

Android 可在具有不同屏幕尺寸和像素密度的各种设备上运行。系统执行基本的缩放和调整大小,以使用户界面适应不同的屏幕,但应执行更多工作以确保 UI 正常适应每种类型的屏幕。

虽然事情(可以说)正在好转,但遵循文档中的良好做法和建议仍然是最安全的方法。

最新更新