【问题标题】:What is the best way to display list items (thousand+) in AIR Mobile app?在 AIR 移动应用程序中显示列表项(千+)的最佳方式是什么?
【发布时间】:2014-05-02 08:13:31
【问题描述】:

我正在开发一个显示联系人列表的应用程序。该应用程序适用于 Android 和 iOS,在 AS3 中开发。该联系人列表包含 1000 个基本用途的项目,可能达到 10 000 个。

现在,包含这么多项目的 displayList 当然不起作用。

所以我尝试在渲染之前使用 BitmapData(相同的项目在 BitmapData 上被更新、移动和“标记”),但是对于 bitmapData 来说太大了。

我现在正在考虑计算联系人列表中滚动条的位置,并仅在 displayList 上呈现屏幕上的内容,但我不确定如何处理。

解决此类问题的最佳做法是什么?

谢谢

【问题讨论】:

    标签: android ios actionscript-3 mobile air


    【解决方案1】:

    我现在正在考虑计算卷轴在 联系人列表并仅在 displayList 上呈现屏幕上的内容,但 我不确定如何处理。

    这是正确的做法,它是对象池的一种形式,我认为它也称为布局虚拟化。我不知道在经典AS中怎么做,但是我一直在使用Starling框架(gpu渲染显示列表),并且那里的组件库(称为Feathers)有这样的列表,您不妨检查一下其实施。这是一个演示(查看列表),我已经用数千个项目对此进行了测试,并且效果很好: Feathers Component Explorer

    但简而言之,这个想法是创建等于可以同时看到的最大值的视觉组件。然后,每当列表移动时,您必须检查哪些是可见索引。当它们发生变化时,这发生在一个项目变得不可见时 - 例如从顶部移开,您将它移到底部并与新数据一起重复使用它,对应于它的索引。

    【讨论】:

    • 感谢您的快速回答:)
    • 只是为了补充您的答案,Flex 中的 List 组件使用 ItemRenderers 具有完全相同的效果。不是数千个被渲染,而是一个或两个不断重新填充的池,这是处理这个问题的正确方法。
    • 最后,该应用程序已经开发完成(as3,没有 flex),所以我不会使用 Starling,但我会研究一下,它看起来真的很不错。我设法通过做一个未呈现的大量列表和一个用于滚动的几乎空的列表来做我想做的事情。我检查滚动状态并将隐藏的秘密列表中的项目交换到显示的项目。到目前为止工作正常。不理想,但它会成功。 :)
    【解决方案2】:

    最好为此使用一些框架 - 搜索 UI 工具。如果您使用的是 Starling - 有 Feathers。你也可以使用MadComponents,这很不错。对于简单的情况,您可以使用MinimalComponents

    它们都有内置列表。如果你不喜欢它们,你应该自己构建一个。

    最佳做法是仅显示可见项目,而将其他项目从舞台上移除。所以你必须计算正在滚动的列表的当前位置,计算可见的项目,然后添加并显示它们。其他所有内容都应删除和隐藏。

    不过,我认为我提到的其中一些应该适合您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多