我创建了一个使用大量 GIF 的 Android 应用程序。我收到一些反馈说图像没有在 Galaxy S III 上显示,我使用这篇文章意识到我的 GIF 是问题所在:图像没有在 Galaxy S3 上加载。
但我有一个担忧。我从一篇文章中借了一些代码来告诉我我正在使用多少内存。当我使用 GIF 时,我得到如下值:
I/memory ( 547): App Memory: Pss=12.15 MB
I/memory ( 547): Private=10.52 MB
I/memory ( 547): Shared=8.47 MB
当我切换到 PNG 时,我得到这样的值:
I/memory ( 547): App Memory: Pss=21.33 MB
I/memory ( 547): Private=20.18 MB
I/memory ( 547): Shared=14.02 MB
为什么使用 PNG 时内存使用量要高得多?
我有 110 张图片,大小从 75x75 到 1048x907(1KB 到 148KB)不等。GIF 的总大小为 1.39MB,PNG 的总大小 = 1.48MB。至于压缩,我使用 Paint.NET 来保存它们并使用“自动检测”作为位深度。
编辑:我回去看了看,大部分图像都保存为 8 位、256 色。
我猜 GIF 占用更少磁盘空间的事实是令人困惑的部分。似乎Android应该更轻松地处理PNG。
我正在使用表面视图并调用 canvas.drawBitmap