管理图像层次结构的最佳方法是什么?

时间:2019-11-14 17:18:12

标签: android ios uitableview listview assets

我们正在构建一个列出约1000条记录的应用程序(iOS和Android)。该列表显示在表视图/列表视图中,并且在视图中显示与每个记录相关的图像。选择记录后,将打开详细信息视图并显示与该记录相关的多个图像。 在这两个平台中组织这些图像资产并对其进行访问的最佳(最简单)方法有哪些?

更多信息: 每个详细屏幕都有几行文字。这也需要处理。 图片应与该应用打包在一起,因为该应用将在离线状态下大量使用。

2 个答案:

答案 0 :(得分:1)

对于iOS :: 选择后显示的收藏夹视图可能是最简单的。

1000张以上的图片?那是很大的,将使您的商店的ipa膨胀,也使您不得不添加所有图像。您应该真正将它们放在服务器上,并在需要时下载它们,或者在首次加载时下载所有内容。

我要为桌面视图添加缩略图或其他内容,然后在选择时将相关图像下载到应用程序捆绑包中的目录中。该临时目录可以充当您的源。只需创建一个包装程序即可,该包装程序将读取目录并为找到的每个图像(如果有图像和文本说明,则创建一个ImageObject)创建一个ImageObject,然后编译为Dictionary,并且键可以标识每个记录。

在编译与记录相关的所有图像时,包装器是重要的一层,因为只要您维护使用字典来组织数据的接口协定,就可以在需要时交换实现。

tableview显示所有记录,并在需要时下载缩略图(这是非常标准的)。选择记录然后转到收集视图,该视图向包装​​器询问记录图像/描述。包装器从系统或服务器获取它们,然后返回字典。然后集合视图使用字典作为数据源,显示所有带有图像描述的图像

无论如何,我都会根据您含糊的规格来这样做。

答案 1 :(得分:1)

首先,绝对不建议将它们存储在Core Data中。核心数据性能低下,不能跨平台使用。将图像存储到Core Data中没有任何好处,显示时需要对其进行序列化。

我建议您将记录存储在SQLite数据库中。 SQLite是一个高性能,跨平台的嵌入式数据库,两个平台都完全支持。

创建一个SQLite 3数据库并存储所有记录,但是该图像有两种情况:

  1. 图像非常小,例如按钮的图标,图像的数量较少,那么您可以将其直接存储在数据库中。
  2. 图像很大,数量很大,那么应该将其存储在系统中,仅将图像的名称或路径存储到数据库中。

我建议将图像存储在系统中,因为无法查询和索引斑点数据。当您需要对图像进行某些处理时,这会更加麻烦。从系统中读取将比从数据库中读取更快。

包装前应压缩图像。如果图像较大,则创建相应的缩略图将提高UI流畅度。

然后,您只需要将数据库和图像(如果未存储在数据库中)复制到您的应用程序。当将来数据发生变化时,您只需要为应用替换数据库即可。