我正在开发一个预订引擎的安卓应用,类似于航空公司的预订系统。为了获取所有符合乘客搜索条件的航空公司的内容,这些内容将显示在手机屏幕上。
考虑到屏幕加载时间、系统内存消耗和附加功能,表格布局和网格布局哪个更有效?
我正在开发一个预订引擎的安卓应用,类似于航空公司的预订系统。为了获取所有符合乘客搜索条件的航空公司的内容,这些内容将显示在手机屏幕上。
考虑到屏幕加载时间、系统内存消耗和附加功能,表格布局和网格布局哪个更有效?
注:截至 API 级别 14,Android 终于有了 GridLayout;请参见下面的答案。此外,V7 支持库向下兼容到 API 7 的 GridLayout 支持。但是,本回答对 GridView 的描述仍然精准且表述清晰。
如果您指的是 GridView,那么TableLayout和GridView是完全不同的东西。
GridView基本上像ListView一样,但其项目是按严格的网格排列的。它附加到一个适配器,并在用户滚动时从适配器中检索视图。网格中的所有元素必须具有相同的大小。用户可以通过每个项目移动可见的选择器——GridLayout的目标是显示来自适配器的数据,并使用户能够导航和选择每个显示的项。与ListView唯一的区别是将项目放入网格中而不是垂直列表中。
TableLayout只是一种布局管理器,有点像HTML中的表格。它本身不会滚动;要拥有可滚动的内容,必须将TableLayout放入ScrollView中。这意味着您要显示的所有数据都必须预先填充到TableLayout中,以便ScrollView知道它要滚动的总空间。它也不会直接为您提供每个“项目”的选择或交互,因为TableLayout没有项目,它只是一个布局管理器。
您实际上没有提供足够有用的信息来推荐使用什么。这在很大程度上取决于您想要什么具体内容。
我指的是在“其他功能”方面有用的东西!?那你需要什么功能!
无论如何,通常情况下,如果用户需要滚动查看大量数据,则应使用基于适配器的视图;相较于事先创建整个视图层次结构以显示数据,这种方式更加高效。它们也是唯一能自动提供每个项目选择和其他类似功能的视图。应用程序主要使用的此类视图是 ListView,但也可以使用 GridView。编辑:如果您需要展示大量的项目,请考虑使用RecyclerView和GridLayoutManager。这可以帮助减少内存和CPU使用。
TableLayout 的配置通常很容易适应,因为 GridLayout 支持行和列跨度。不需要 TableRows,因为在 GridLayout 中它们是不必要的。对于相同的 UI,GridLayout 通常比 TableLayout 更快,占用更少的内存。
TableLayout 可以在所有 Android 版本上使用,而 GridLayout 需要级别 11 (Android ICS 4.0)或更高版本,但可以通过 support librarry v7 轻松添加以支持级别 7(Android 2.1)或更高版本。
我认为GridView
应该更好地工作,因为它是通过视图回收和继承自AbsListView
来实现的。虽然使用Adapter
来部署GridView
会更加困难,但如果您需要加载大量重视图(例如图片),它将更加高效。
我认为TableLayout更容易使用。对于GridLayout,您需要构建自定义适配器等内容,这会导致应用程序更加复杂。
在查看不同的屏幕大小时,GridLayout将根据内容自动选择好的列数和行数,并且在添加项目方面更加灵活。
此外,GridLayout更加灵活,但制作起来需要更多的工作。