Android中网格的二维滚动

时间:2019-01-02 12:27:45

标签: android android-layout

到目前为止,我已经尝试制作一个(可能无限的)网格来滚动,但没有成功。渲染屏幕外的GridView时遇到麻烦。这就是为什么我想问一下android中是否有其他可用于此任务的组件?

grid to scroll in Android

3 个答案:

答案 0 :(得分:4)

根据您的要求,它看起来像是带有无限滚动功能的表格式RecyclerView或某些2d游戏引擎(以防此功能值得您带上它)可能是您的最佳解决方案。

RecyclerView

如果只想存储一些对象(不管是否是图形对象-没关系,如果可以将它们打包到单元格中),则可以使用某种RecyclerView适配器及其扩展名进行无限滚动。

这样,您可以使用视图回收机制节省一些内存。使用详细的通知机制(如已移动/删除的项目),即使对象正在移动,您甚至可以添加一些动画。

除了建议的解决方案evrencoskun/TableView外,我建议浏览一下GridLayoutManger的整体工作方式,这是the first post out of three的{ {1}}及其RecyclerView的工作原理,因此您可以针对特定情况量身定制更轻巧的解决方案。有一个simple demo app,带有“大网格”选项的“固定双向列表”,可能会让您对要构建的内容有所了解。您将需要扩展它以使用无限列表,但是当您了解内部原理时,它应该会更简单。

2D引擎

如果想法是在图块上具有任意大小的图形,并且该功能是应用程序的核心,那么考虑使用诸如libdx之类的2d引擎可能是一个好主意。他们有许多使用方法的示例,但是当然会花一些存储和时间来学习它:libgdx wike

自己的解决方案

如果这两种方法都不适合您的需求,那么您将必须从头开始找到自己的解决方案。不要忘记对其进行优化,因为Android中的所有无限事物,尤其是与图形绑定的事物,都可能轻易导致内存不足错误。

答案 1 :(得分:2)

我建议这个evrencoskun/TableView

它可以让您水平和垂直滚动。

<com.evrencoskun.tableview.TableView
android:id="@+id/content_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

答案 2 :(得分:0)

此链接可能会对您有所帮助

https://github.com/jess-anders/two-way-gridview

<?xml version="1.0" encoding="utf-8"?>
<com.jess.ui.TwoWayGridView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="#E8E8E8"
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    app:cacheColorHint="#E8E8E8"
    app:columnWidth="80dp"
    app:rowHeight="80dp"
    app:numColumns="auto_fit"
    app:numRows="auto_fit"
    app:verticalSpacing="16dp"
    app:horizontalSpacing="16dp"
    app:stretchMode="spacingWidthUniform"
    app:scrollDirectionPortrait="vertical"
    app:scrollDirectionLandscape="horizontal"
    app:gravity="center"/>