【问题标题】:Including thousands of images in Xamarin Forms application在 Xamarin Forms 应用程序中包含数千张图像
【发布时间】:2016-05-18 12:50:07
【问题描述】:

我为我工作的公司提供了一个 xamarin 表单项目。我有 6000 多张图片以两种方式使用:缩略图页面和全尺寸页面。我有缩略图和全尺寸图像。缩略图页面一次显示 12 个产品,但它位于轮播页面中,因此轮播中最多可以有 18 个内容页面。

我尝试了三种保存/访问图像的方法:

  1. 将它们作为 bundle/android 资源包括在内。这效果最好,但构建项目需要很长时间,在 android 上意味着我必须使用扩展文件。
  2. 在下载产品列表时包含来自数据库的二进制图像。导致应用在下载时随机崩溃。
  3. 从 Web 下载所有文件。这可行,但在 Android 和 iOS 上,缩略图屏幕都会变慢,并且有一半的时间会在 Android 上崩溃。

有没有人不得不做类似的事情,如果是,你决定走什么路?不幸的是,这个应用程序必须可以离线使用,所以我需要本地图像。我有点时间紧迫,所以任何帮助都将不胜感激!

【问题讨论】:

  • 如果离线工作是硬性要求,那么使用 Android .obbs 是必需的,除非您要强制应用程序的首次使用来下载和缓存这些图像。对于应用程序构建时间和测试,对于游戏中的媒体元素,我们创建自定义构建脚本以将“所有”文件包含在完整版本构建中,因为在您的开发中保留这么多文件.csproj 对您的调试周期来说是纯粹的死亡。创建一些媒体占位符并在调试/测试周期中使用它们,因为作为开发人员,我没有理由需要实际查看和滚动浏览 6k 目录图像。
  • @SushiHangover 谢谢你的回复!我想走 obb 路径,但找不到一个很好的教程如何使用 Xamarin 表单来做到这一点。在这方面,你有或你看到有什么可以帮助我的吗?此外,如果您有一个示例构建脚本,我可以查看这将对我有很大帮助。再次感谢您!
  • 就您的 #2/3 问题而言,我们需要查看一些代码和堆栈跟踪来帮助解决应用程序崩溃问题,因为下载和/或显示图像的实际过程不会是原因,也不是数字图像,而是您对这些例程的实现。
  • 我们没有将.obbs 与 Xammie Forms 一起使用,但在这种情况下我想不出任何“特殊”的东西,资源就是资源......我看看我是否可以发布一个我们用于构建 apk、obb 和 ipa 的脚本很少。我们处于 1GB 的“外部”媒体范围内,主要是图像,但也有很多声音剪辑、二进制着色器、序列化关卡等……还有……
  • @SushiHangover 再次感谢您。我现在坐在 500-600 MB 的范围内。我从来没有实现过 obb,所以我不能 100% 确定它是如何工作的,以及我将如何从中访问我的图像。谢谢!

标签: android ios image xamarin xamarin-forms


【解决方案1】:

有一天,我遇到了类似的问题,并了解到使用具有如此大量图像的标准 Image 类(没有内存缓存、没有任务队列等)不会成功。然后我做了CachedImage。它基本上是 Image 的 API 兼容替代品,具有高级缓存功能(和一些其他功能)。你可以试试。

只要记住使用:

  • 下采样功能:这样可以调整图像大小以查看大小以节省内存
  • 缓存功能(默认启用,不包括StreamImageSource,您必须为其提供自定义缓存密钥工厂)
  • FileImageSource(应用程序目录)或StreamImageSource(例如来自图像数据库)与自定义缓存键一起使用 https://github.com/molinch/FFImageLoading(请参阅 WIKI 获取文档)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多