支持多个 Android 屏幕:为所有密度设置抽屉文件夹(图像)的优缺点?
Supporting Multiple Android Screens: Advantages vs. disadvantages of having drawer folders (images) for all densities?
我不明白为什么建议为所有密度(ldpi、...、xxhdpi)设置可绘制对象(图像)。
添加一个具有最高所需密度 (xxxhdpi) 的文件并以编程方式缩小该图像(例如,对于选项卡图标,我可以设置一个明确的 dp 大小)不是更好吗?
因此我只需要管理一个文件,而且APK文件的大小会更小。我认为性能劣势应该不大。
更新 1:
更具体地说:在我的 mdpi 设备上使用按比例缩小到明确 dp 值的高密度图像(PNG 文件)时,我从未注意到任何质量损失。
所以我在考虑 作为编码人员在没有设计师的情况下管理多个图像文件的缺点(以及更大的 APK 文件大小)是否可能超过优点。特别是如果我要针对较新的设备 (API >= 17)。
更新二:
就我而言,与其说我是设计师,不如说我是一名程序员。在@mes 的麦克风示例图像中,我可以只使用左侧麦克风的高密度版本并将其缩小而没有明显的缺点吗?
没有明显的优势,当设计者或者你简单地缩小图像尺寸并放入ldpi时,实际的意思是为小尺寸绘制另一个图像,因为有很多情况,当简单地缩小图像尺寸时会产生不准确和低质量的图像,一个好的设计师会绘制另一幅图像,其中的细节很少,这只是一个例子,只有在这种情况下才值得将不同的图像放在不同的文件夹中
Therefore I would only have to manage one file and the APK file size would be smaller. I think the performance disadvantage should not be significant.
是的,你是对的,没有显着的性能改进,而且 apk 大小也在增加,这就是为什么不值得缩小相同的图像。
这有两个原因:
- 通常情况下,屏幕密度较低的设备的图像和图形处理硬件往往也不太强大,同时内存也较低。
- 不仅仅是密度,文件大小和图像尺寸也会相应缩放。
因此,从技术角度来看,Android 为不同的屏幕尺寸设置不同的可绘制对象的方式是合适的。
第一个优点就是我提到的:不同尺寸的不同图像。
第二个优势是 memory/code 效率:android 上的 1000x1000 像素图像将占用 1000x1000x4 ~= 3.8 MB 的内存,这在每个应用程序可用内存为 16 MB 的较小屏幕上确实被浪费了。您可以尝试 loading the bitmaps efficiently,但每个图像 put/maintain 的代码很多,并且在某些情况下还会出现性能问题。
我不明白为什么建议为所有密度(ldpi、...、xxhdpi)设置可绘制对象(图像)。
添加一个具有最高所需密度 (xxxhdpi) 的文件并以编程方式缩小该图像(例如,对于选项卡图标,我可以设置一个明确的 dp 大小)不是更好吗?
因此我只需要管理一个文件,而且APK文件的大小会更小。我认为性能劣势应该不大。
更新 1:
更具体地说:在我的 mdpi 设备上使用按比例缩小到明确 dp 值的高密度图像(PNG 文件)时,我从未注意到任何质量损失。
所以我在考虑 作为编码人员在没有设计师的情况下管理多个图像文件的缺点(以及更大的 APK 文件大小)是否可能超过优点。特别是如果我要针对较新的设备 (API >= 17)。
更新二:
就我而言,与其说我是设计师,不如说我是一名程序员。在@mes 的麦克风示例图像中,我可以只使用左侧麦克风的高密度版本并将其缩小而没有明显的缺点吗?
没有明显的优势,当设计者或者你简单地缩小图像尺寸并放入ldpi时,实际的意思是为小尺寸绘制另一个图像,因为有很多情况,当简单地缩小图像尺寸时会产生不准确和低质量的图像,一个好的设计师会绘制另一幅图像,其中的细节很少,这只是一个例子,只有在这种情况下才值得将不同的图像放在不同的文件夹中
Therefore I would only have to manage one file and the APK file size would be smaller. I think the performance disadvantage should not be significant.
是的,你是对的,没有显着的性能改进,而且 apk 大小也在增加,这就是为什么不值得缩小相同的图像。
这有两个原因:
- 通常情况下,屏幕密度较低的设备的图像和图形处理硬件往往也不太强大,同时内存也较低。
- 不仅仅是密度,文件大小和图像尺寸也会相应缩放。
因此,从技术角度来看,Android 为不同的屏幕尺寸设置不同的可绘制对象的方式是合适的。
第一个优点就是我提到的:不同尺寸的不同图像。
第二个优势是 memory/code 效率:android 上的 1000x1000 像素图像将占用 1000x1000x4 ~= 3.8 MB 的内存,这在每个应用程序可用内存为 16 MB 的较小屏幕上确实被浪费了。您可以尝试 loading the bitmaps efficiently,但每个图像 put/maintain 的代码很多,并且在某些情况下还会出现性能问题。