【问题标题】:Android app optimization regarding images关于图像的 Android 应用程序优化
【发布时间】:2013-02-08 23:29:24
【问题描述】:

我正在开发的应用程序将有很多图像(每个列表项都有图像的列表视图、带有图像的网格视图、图像库),因此在可绘制文件夹中的开发结束时将是大约 1000 或更多图片。现在我在drawable文件夹中有大约200张图片。

将所有图像放在drawable文件夹中是否正确,或者添加它们的最佳方式是什么?

图像用于:

  • 网格视图

  • 每个 Gridview 项的 ListView

  • 每个 listView 项目的图库

【问题讨论】:

  • 你的意思是最优。读取图像的速度,或其他一些性能问题?首先,我最关心的是旧手机的内存使用情况。 APK 是一个 zip 文件,因此拥有大量小文件和一个大文件可能不会对阅读速度产生太大影响。
  • 我不想在开发结束时醒来,因为在可绘制文件夹中有 1000 张图像,即使在较新的手机上应用程序也无法正常运行
  • 那么现在就获取 10000 张图像并在 Galaxy Y 或类似设备上测试您的应用(甚至只是上面描述的视图)!

标签: android image optimization


【解决方案1】:

您可以将图像存储在 SD 卡上。存储在资源文件夹中会增加应用程序的大小。

【讨论】:

    【解决方案2】:

    您的 apk 在 google play 上不能超过 50 MB 这里是扩展包的链接

    http://support.google.com/googleplay/android-developer/answer/2481797?hl=en

    【讨论】:

      【解决方案3】:

      如果您要处理大量图像,最好将它们保存在 assets 文件夹中。

      drawable 文件夹,用于存储图标和背景,在某些情况下您没有很多图像,i 可用于存储列表和网格的图像。这是因为可绘制对象上的图像已预先加载到内存中,因此如果您有很多高分辨率图像,它们可能会占用设备的所有 RAM 内存。

      另一方面,assets 文件夹非常适合这种情况,因为图像存储为原始图像,当您想要使用它们时,您必须将它们构建为位图,因此您负责构建它们并使用当你需要它们时。

      将图像存储在资产上还意味着您必须注意内存消耗,因为如果您加载包含大量高分辨率图像的列表或网格,无论如何您都会填满内存。我建议使用支架制作您的列表和网格,这样当一个项目没有显示在屏幕上时,它就不会存储在 ram 上。

      如果您需要同时在屏幕上显示多个高分辨率图像,我建议使用 BitmapFactory.options.inSampleSize 构建它们。这允许您将大小参数传递给您将要构建的位图,因此您不会构建一个与将要存储它的容器的大小相比太大的位图

      【讨论】:

        【解决方案4】:

        资源中的图像加载速度更快(仅通过 ID)。
        但是,如果您存储 1000 多张图片,您的应用将会非常庞大​​。
        所以我的建议:将图片以 zip 格式保存在某个网络服务器上,用户首次安装您的应用后,您应该下载并将其解压缩到 SD 卡文件夹中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-10-01
          • 2011-04-30
          • 1970-01-01
          • 2011-08-03
          • 1970-01-01
          • 1970-01-01
          • 2013-01-12
          相关资源
          最近更新 更多