当我们在Android布局中使用图片时,ImageView
的高度和宽度通常设置在dp
中,这与所有屏幕分辨率相同。在Android开发的早期阶段,分辨率越来越高,分辨率越低的图像放大显示效果不佳。但现在决议大多是稳定的。如果我们只使用最高分辨率的图像,它将在较低分辨率的屏幕中缩小,并且看起来仍然很好。那么为什么我们不使用最高分辨率的图像而不是为每个图像提供4-5分辨率版本?有任何技术上升空间吗?
答案 0 :(得分:0)
没有什么可以阻止你只使用高分辨率图像 - 但有一些陷阱。
想象一下,您的资源中有一个高质量的图像要显示在屏幕上。您检查Android Dashboard并确定大多数屏幕为xhdpi
,密度为~/.local/share/applications/jetbrains-idea.desktop
。这是否能为您提供有关资源中图像大小的足够信息,以便在野外的每个屏幕上都能看起来很好?
好的,比对不起更安全你自己嘀咕着,同时决定将海报大小的图像留在你的资源中。图像是70MB。你的APK大小会急剧增加,但谁在乎呢,对吗?
接下来,编写一些代码来显示图像。您喜欢在旧的低端设备上进行测试。如果它适用于那些,它 应该在你的品牌打击新的三星S9。您运行该应用程序并受到OutOfMemoryError的欢迎。猜猜有些设备无法处理如此大的图像,请去图。
所以你做一些谷歌搜索,偶然发现Loading Large Bitmaps Efficiently。您应用子采样,瞧,图像加载。现在唯一的问题是弄清楚图像实际显示的内容,因为压缩完全扭曲了其原始质量。
所以你回到原始图像,做一些魔术,并产生一个较小但仍然可行的图像,比如10MP。旧设备上的加载可能仍会失败,因此您将子采样保留在中,但压缩现在要严重得多。做完了撒!
几天后,QA报告称这张图片在Android TV上难以理解。猜猜它回到了绘图板......
Android碎片是一个真正的交易。以下是Screen Compatibility Overview:
的摘录事情(可以说)越来越好,遵循文档中的良好实践和建议仍然是最安全的方法。Android可在各种屏幕尺寸和像素密度不同的设备上运行。系统执行基本缩放和调整大小以使您的用户界面适应不同的屏幕,但是您应该做更多的工作来确保您的UI适应每种类型的屏幕。